【问题标题】:deploying yii2 project using application load balancer with aws ssl certificate使用带有 aws ssl 证书的应用程序负载均衡器部署 yii2 项目
【发布时间】:2020-08-05 05:36:08
【问题描述】:

我正在 aws 上部署我的 yii2 项目,并使用带有 aws ssl 证书的应用程序负载均衡器。问题是,每当调用 $this->redirect(..) 时,url 都会更改为 http 而不是 https,并且浏览器会显示“无法访问此站点”(负载均衡器仅处理 https)。我想强制所有重定向操作将 url 设置为 https。

更新

我将 url 管理器的 baseUrl 更改为 https://mywebsite.com 以解决此问题。现在它只出现在用户登录和注销时。使用 goHome() 和 goBack() 动作的地方

【问题讨论】:

  • 我的猜测是负载均衡器正在尝试使用 http 而不是 https 访问 Web 应用程序。这让 yii 认为它应该对 url 使用 http 协议。您可以将负载均衡器设置为通过 https 访问应用程序吗?

标签: php amazon-web-services yii2 yii2-advanced-app aws-application-load-balancer


【解决方案1】:

您当前解决方案的缺点是每个应用程序不能有多个域。 我们有一个非常相似的设置。我们的负载均衡器正在终止 ssl,所有其他流量都通过 http 在内部网络中发送。

为了满足您的需求,请确保将标头 X-Forwarded-Proto 设置为 https

并将请求组件配置为不删除X-Forwarded-Proto(通过secureHeaders)或配置$trustedHosts,以便标头过滤器根本不会删除任何安全标头。

例如:

'request' => [
            'class' => 'yii\web\Request',
            'enableCsrfValidation' => true,
            'cookieValidationKey' => 'YOUR COOKIE KEY',
            'csrfCookie' => [
                'httpOnly' => true,
                'secure' => true
            ],
            'secureHeaders' => [
                // Common:
                'X-Forwarded-For',
                'X-Forwarded-Host',
                //secure headers are filtered out if they are sent from not trusted remote hosts.
                
                //'X-Forwarded-Proto',

                // Microsoft:
                'Front-End-Https',
                'X-Rewrite-Url',
            ]
        ],

之后,getIsSecureConnection() 将正确返回 true,并且您的重定向 URL 将生成为 https。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2019-12-17
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多