cakephp AWS应用程序负载平衡器SSL终止与Apache Docker

643ylb08  于 2022-11-12  发布在  PHP
关注(0)|答案(1)|浏览(158)

我正在使用AWS应用程序负载平衡器来设置我的环境。
应用程序负载平衡器在端口443接收来自Internet的请求,并将其转发到端口80。
Apache服务器在负载平衡器后面的EC2服务器端口80上运行Docker。
我的网站是用CakePHP开发的。
当我调用https://www.example.com时,我的网页被加载。
然而,在PHP中,当我使用下面的代码来获取当前的url时,我得到的url是http://www.example.com。我没有得到https。我只得到http。

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

因此,当应用程序调用 AJAX 时,请求是通过http(不是https)发出的,浏览器将拒绝请求,因为**“阻塞:混合内容”**。我认为请求应该以https发出。请指出我遗漏了什么。
我尝试了以下方法,但没有任何效果
在主机文件中。(或)我把它放在.htaccess中

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

yb3bgrhw1#

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


# for port forwarding

RemoteIPHeader X-Forwarded-For

# set Environment Variable

SetEnvIf x-forwarded-proto https HTTPS=on

然后,检查“phpinfo()”以确保**$_SERVER ['HTTPS']是”“上的”**“。

相关问题