我有一个设置,其中Apache在端口80上的Varnish 4后面监听端口8080,但是我的客户端需要ssl在网站上工作,因此我使用this guide在端口443上设置Nginx以进行SSL终止。
首先在http上运行一切正常,但在尝试在https上加载网站时,网站所需的脚本将无法加载,因此我决定将Settings > General
中的网址网址更改为https网址,在保存更改时,我在Chrome中遇到了重定向循环错误。
我无法访问网站的wordpress仪表板来更改网址,所以我不得不通过phpmyadmin进行操作。但是现在当通过https访问该站点时,站点中断会导致呈现内容所需的脚本未经过身份验证。
其他人有同样的问题here,但看起来并没有解决。
如果没有Chrome中的重定向循环,我如何才能在https
上设置该网站?
答案 0 :(得分:9)
在尝试使用此功能后数小时,我终于找到了一个修复程序,我只需要在更改网站网址之前在HTTP_X_FORWARDED_PROTO
中添加wp-config.php
,这样:
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
我要做的另一件事是将proxy_set_header X-Forwarded-Protocol $scheme;
添加到default
中的/etc/nginx/sites-enabled/default
文件中,所以它看起来像这样:
server {
...
location / {
...
proxy_set_header X-Forwarded-Protocol $scheme;
}
}
希望这可以帮助那些人。
答案 1 :(得分:2)
您可以在nginx中设置此标头:
proxy_set_header X-Forwarded-Proto $scheme;
然后在你的apache vhost配置中:
SetEnvIf X-Forwarded-Proto "^https$" HTTPS=on