Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir Phoenix endpoint config-使用多个子命令强制HTTPS_Elixir_Phoenix Framework - Fatal编程技术网

Elixir Phoenix endpoint config-使用多个子命令强制HTTPS

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

我正在设置一个Phoenix应用程序,该应用程序为来自同一端点的多个子域提供服务。它所做的只是使用一个插件,根据请求的子域,在端点插件的末尾选择一个不同的路由器。一切正常

问题在于
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)将提供更细粒度的控制