【问题标题】:Phoenix endpoint config - Force HTTPS with multiple subomdainsPhoenix 端点配置 - 使用多个 subomdains 强制 HTTPS
【发布时间】:2017-04-12 18:25:21
【问题描述】:

我正在设置一个 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.comhttps://foo.myapp.com
  • http://bar.myapp.comhttps://bar.myapp.com

https://foo.myapp.comhttps://bar.myapp.com 的请求不应被重定向。

我们将不胜感激!如果相关,我在 Phoenix 1.3 上。

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    来自SSL plug source

    动态重定向到当前请求的host:host 必须设置为nil

    看起来像:

    config :myapp, MyApp.Endpoint,
      force_ssl: [
        host: nil,
        rewrite_on: [:x_forwarded_proto]
      ]
    

    不过,使用代理(即 NGINX)将提供更精细的控制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-08
      • 2020-11-12
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 2011-04-18
      • 2019-06-13
      相关资源
      最近更新 更多