[英]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.