Php 使用具有aws ssl证书的应用程序负载平衡器部署Yi2项目

Php 使用具有aws ssl证书的应用程序负载平衡器部署Yi2项目,php,amazon-web-services,yii2,yii2-advanced-app,aws-application-load-balancer,Php,Amazon Web Services,Yii2,Yii2 Advanced App,Aws Application Load Balancer,我正在aws上部署我的Yi2项目,并使用带有aws ssl证书的应用程序负载平衡器。问题是,每当调用$this->redirect(..)时,url都会更改为http而不是https,并且浏览器显示“无法访问此站点”(负载平衡器仅处理https)。我想强制所有重定向操作将url设置为https 更新 我为url管理器更改了baseUrl以解决此问题。现在它只出现在用户登录和注销时。在使用goHome()和goBack()操作的地方当前解决方案的缺点是,每个应用程序不能有多个域。 我们有一个非常相

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

更新


我为url管理器更改了baseUrl以解决此问题。现在它只出现在用户登录和注销时。在使用goHome()和goBack()操作的地方

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

为了满足您的需要,请确保标题
X-Forwarded-Proto
设置为
https

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

例如:

“请求”=>[
'class'=>'yii\web\Request',
“enableCsrfValidation”=>true,
'cookieValidationKey'=>'YOUR COOKIE KEY',
“csrfCookie”=>[
“httpOnly”=>true,
“安全”=>true
],
'secureHeaders'=>[
//常见的:
“X-For”,
“X-Forwarded-Host”,
//如果安全标头是从不受信任的远程主机发送的,则会将其过滤掉。
//“X-Proto”,
//微软:
'前端Https',
“X-Rewrite-Url”,
]
],

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

我猜负载平衡器正在尝试使用http而不是https访问web应用程序。这让我觉得它应该对URL使用http协议。您能否将负载平衡器设置为通过https访问应用程序?此答案应被接受!