从另一个实例提供Wordpress时出现混合内容错误

问题描述

我想从https://example.com/blog提供wordpress应用程序。问题是https://example.com托管在另一个实例上,而我正在将/blog重定向到另一个实例。我正在使用的服务器是Nginx。这是我的Nginx配置。

server {
 server_name example.com;

  location / {
   try_files $uri $uri /index.html;
  }

  location ^~ /blog {
   proxy_pass http://<IP>/blog;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

   allow <IP>;
 }
}

/blog在其他实例上运行时,由于代理传递给http:IP并通过https加载,这给了我混合内容错误。请帮我解决这个问题。

解决方法

$_SERVER['HTTPS']需要设置为on,以防您通过proxy_pass访问它并通过HTTPS传递它。否则,WordPress知道它已转发,但无法检查它是通过HTTP还是HTTPS传递到外部的。将这些行添加到您的wp-config.php文件中:

if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $_SERVER['HTTPS'] = 'on';
}

请注意,如果有多个代理并且其中之一不提供HTTPS服务,则必须根据HTTP_X_FORWARDED_FOR实际包含的内容来确定该条件。现在,我们仅检查它是否为非空,并假设它为HTTPS。