我正在使用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}
1条答案
按热度按时间yb3bgrhw1#
我找到了解决方案。诀窍是在”“上设置$_SERVER ['HTTPS']变量“。在apache中,打开“setenvif”模块。然后在“/etc/apache 2/apache2.conf”中,进行以下设置
然后,检查“phpinfo()”以确保**$_SERVER ['HTTPS']是”“上的”**“。