问题描述
我想从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。