解决 WordPress 在反向代理后面不自动 https 的问题

搞 Docker 时候遇到各种奇葩问题。

WordPress 官方默认 Docker 是基于 Apache 来做的,但为了自动加上 SSL,我用了一个 Nginx 容器来做反向代理。于是问题出现了:用 HTTPS 访问 Nginx,生成出来的网页里面所有生成的 URL 都是 HTTP,而不是 HTTPS。

解决办法:在 wp-config.php 里面加上这样几句话:

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

就是说,如果发现我们用 HTTPS 访问反向代理,那么给全局变量里面增加一个 HTTPS 的 Flag。

所以说呢,直接跑 FPM 的 Docker,加上 Nginx 反代就好了嘛……Apache 的 Docker 会麻烦一些。


已发布

分类

作者:

标签

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注