通过Varnish / Apache在Wordpress上使用Nginx SSL终止重定向循环

时间:2015-06-14 15:43:58

标签: wordpress apache nginx ubuntu-14.04 varnish

我有一个设置,其中Apache在端口80上的Varnish 4后面监听端口8080,但是我的客户端需要ssl在网站上工作,因此我使用this guide在端口443上设置Nginx以进行SSL终止。

首先在http上运行一切正常,但在尝试在https上加载网站时,网站所需的脚本将无法加载,因此我决定将Settings > General中的网址网址更改为https网址,在保存更改时,我在Chrome中遇到了重定向循环错误。

我无法访问网站的wordpress仪表板来更改网址,所以我不得不通过phpmyadmin进行操作。但是现在当通过https访问该站点时,站点中断会导致呈现内容所需的脚本未经过身份验证。

其他人有同样的问题here,但看起来并没有解决。

如果没有Chrome中的重定向循环,我如何才能在https上设置该网站?

2 个答案:

答案 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