我正在设置一个凤凰应用程序,该应用程序从同一端点提供多个子域。它只是使用一个插头在端点插头的末尾选择一个不同的路由器,具体取决于请求的子域。这一切都正常。
问题在于force_ssl
配置。
我的端点配置如下所示:
config :frontend, Frontend.Endpoint,
on_init: {Frontend.Endpoint, :load_from_system_env, []},
url: [scheme: "https", host: "myapp.com", port: 443],
force_ssl: [rewrite_on: [:x_forwarded_proto]],
cache_static_manifest: "priv/static/cache_manifest.json"
主机必须只是myapp.com
,因为此端点配置适用于所有子域。
不幸的是,此配置导致所有foo.myapp.com
(HTTP和HTTPS)请求被重定向到https://myapp.com
。
我想要的行为是301:
http://foo.myapp.com
至https://foo.myapp.com
http://bar.myapp.com
至https://bar.myapp.com
https://foo.myapp.com
和https://bar.myapp.com
的请求应 重定向。
帮助将不胜感激!如果它是相关的,我在Phoenix 1.3上。
答案 0 :(得分:2)
要动态重定向到当前请求的
host
,:host
必须设置nil
。
看起来像:
config :myapp, MyApp.Endpoint,
force_ssl: [
host: nil,
rewrite_on: [:x_forwarded_proto]
]
尽管如此,使用代理(即NGINX)将提供更精细的控制。