View Source Multiple Domains/Tenants
You can host multiple domains or subdomains with Phoenix by using the :host
option of the scope function in your router:
:host
- a string or list of strings containing the host scope, or prefix host scope (e.g. "foo.bar.com"
, "foo."
)
# match admin. subdomain
scope "/", MyAppWeb, host: "admin." do
live "/", AdminLive, :new
end
# match example.com, and "example2.com"
scope "/", MyAppWeb, host: ["example.com", "example2.com"] do
live "/", LandingLive, :new
end
# match my-example.org
scope "/", MyAppWeb, host: "my-example.org" do
live "/", HomeLive, :new
end
Multiple Domains/Tenants hosting with BeaconCMS
If you need to host multiple domains or subdomains with Beacon, you can still use the same :host
option described above!
Here's another example, but now using Beacon:
# serve the `:demo` site at demo.org/demo
scope "/", host: "demo.org" do
pipe_through :browser
beacon_site "/demo", site: :demo
end
# serve the `:blog` site at blog.com
scope "/", host: "blog.com" do
pipe_through :browser
beacon_site "/", site: :blog
end
# serve the admin interface at the prefix /admin on the root domain
scope "/admin" do
pipe_through :browser
beacon_live_admin "/"
end
You also need to pass the :check_origin
option when configuring your endpoint, in order to explicitly outline which origins are allowed.
In config/runtime.exs
edit the following config to include your domains:
config :my_app, MyAppWeb.Endpoint,
...
check_origin: [
"https://beacon-demo.com/",
"https://demo.org",
"https://blog.com"
],
...