Maybe you can have two Web.Endpoint with each with it’s own domain/port to bind to? You can achieve this by having either two phoenix apps in your umbrella, or by adding a “proxy” phoenix (or plug / cowboy) app which would reroute the request further “into the umbrella” based on the domain/port pair.
An easier way would be to just start two supervisors for the endpoints:
# in the <your_phoenix_app>/application.ex
# in start(_, _)
children = [
supervisor(Web.Endpoint1), # binds to 8443
supervisor(Web.Endpoint2) # binds to 8444
]