繁体   English   中英

AWS Application Load Balancer SSL 终止与 Apache Docker

[英]AWS Application Load Balancer SSL Termination with Apache Docker

我正在使用 AWS 应用程序负载均衡器来设置我的环境。

应用程序负载均衡器在端口 443 接收来自 Inte.net 的请求并将其转发到端口 80。
Apache 服务器在负载均衡器后面的端口 80 上的 EC2 服务器上运行 docker。
我的网站是用CakePHP开发的。
当我调用https://www.example.com时,我的网页已加载。
但是,在PHP,当我使用下面的代码获取当前的url时,我得到的url是http://www.example.com 我没有得到 https。我只得到 http。

echo Router::url('/', true);

因此,当应用程序发出 ajax 调用时,请求来自http (非 https),浏览器将请求拒绝为“blocked:mixed contents” 我认为请求应该以 https 的形式出现。请指出我缺少的内容。

我尝试了以下但没有任何效果

在主机文件中。 (或)我把它放在 .htaccess

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}

我得到了解决方案。 诀窍是将$_SERVER['HTTPS']变量设置为“on” 在apache,开启“setenvif”模块。 然后在“/etc/apache2/apache2.conf”中,进行以下设置

# for port forwarding
RemoteIPHeader X-Forwarded-For

# set Environment Variable
SetEnvIf x-forwarded-proto https HTTPS=on

之后,检查“phpinfo()”以确保$_SERVER['HTTPS']“on”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM