Multiple domains in Phoenix

Hi folks, how are you doing today? :slight_smile:

Is there a way to serve multiple domains from a phoenix application? For example, I’ve two customers, A and B, and I want to have A served from www.foo.com and B from www.bar.com

I haven’t found anything related to that in Phoenix’s docs. Is there a way to achieve this from Phoenix, since I’m hosting my app on Heroku?

1 Like

Do you mean 2 domains pointing to single IP address? Checkout your registrar, maybe redirect could help.

You should be able to add multiple domains easily in Heroku. We’re using multiple domains with Phoenix and Heroku without any issues. Have you tried this yet? Have you run into any errors?

You mention two customers, if you need to switch logic on that, the host is on the conn struct available via plug.

Also, I don’t know about doing this with Heroku, but in one of the applications I work on we have different urls pointing at different Phoenix endpoints.

An important caveat here is that the hostname configuration option cannot be set, so Phoenix needs some extra help to figure out the correct host for URL-helpers, I think. There probably is a way to solve this, but it does not immediately occur to me how :sweat_smile:.

Yeah that’s what I was wondering, how it could work without setting the host configuration on the Phoenix side.

I’ll take a look and add my findings, thanks for the tips folks. :slight_smile:

It’s just a matter of setting the url: [host: nil] configuration in phoenix.

7 Likes

Thanks for posting the solution. I was just looking for the exact same thing. If I understand correctly setting host to nil on the endpoint will dynamically use the host of the current request. (at least that is what is implied when reading the :force_ssl option in docs).

2 Likes

Precisely.