Elixir Phoenix endpoint config-使用多个子命令强制HTTPS
我正在设置一个Phoenix应用程序,该应用程序为来自同一端点的多个子域提供服务。它所做的只是使用一个插件,根据请求的子域,在端点插件的末尾选择一个不同的路由器。一切正常 问题在于Elixir Phoenix endpoint config-使用多个子命令强制HTTPS,elixir,phoenix-framework,Elixir,Phoenix Framework,我正在设置一个Phoenix应用程序,该应用程序为来自同一端点的多个子域提供服务。它所做的只是使用一个插件,根据请求的子域,在端点插件的末尾选择一个不同的路由器。一切正常 问题在于force_ssl配置 我的端点配置如下所示: config :frontend, Frontend.Endpoint, on_init: {Frontend.Endpoint, :load_from_system_env, []}, url: [scheme: "https", host: "myapp.co
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)的所有请求被301重定向到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上。来自:
要动态重定向到当前请求的主机
,:主机
必须设置为nil
看起来像:
config :myapp, MyApp.Endpoint,
force_ssl: [
host: nil,
rewrite_on: [:x_forwarded_proto]
]
不过,使用代理(即NGINX)将提供更细粒度的控制