Nginx 反向代理后面的 Wordpress 在 https 中不起作用

Nginx 反向代理后面的 Wordpress 在 https 中不起作用

我正在尝试在基于docker的云上运行wordpress。设置如下:

Wordpress 云设置

有一个运行 mysql 数组的服务器,它为运行在 Nginx 上的 Wordpress 容器提供服务。设置从这个dockerfile。此设置的目标是实现高吞吐量并与我们的云设置兼容。

wordpress 容器有一个本地 ip,与 mysql 阵列和 Nginx 反向代理在同一个子网中,并且有一个运行 http(不是 https)的公共端口。

反向代理配置为对 wordpress 容器运行 SSL。导航在 http 和 https 上均可用,但当我尝试使用 HTTPS 登录仪表板时,出现此错误:

您没有足够的权限访问此页面。

我发现的唯一有意义的错误发生在我通过 HTTP 登录仪表板时:

[2014 年 11 月 4 日 23:16:13 UTC] PHP 通知:未定义索引:/usr/share/nginx/www/wp-config.php 第 86 行中的 HTTP_X_FORWARDED_PROTO

但仪表板在 http 上工作正常。

在 Wordpress 配置文件中我必须添加以下行:

/* SSL 代理 */

如果 ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on';

我认为这就是罪魁祸首。我在官方 wordpress 文档,如果没有它,HTTPS 就不会加载 CSS,无论是否记录。我想也许我应该修改此行以适合我的配置?

要么这样,要么 nginx 反向代理配置文件, 我不知道。

wordpress + nginx 容器中的 nginx 配置文件非常标准,它是从这里

请帮助我 :D

答案1

我遇到了一些问题,我通过以下方式解决:

在我的 wp-config.php 中,

我添加了以下几行:

如果 (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';

在代码中的所有内容之前。

希望能帮助到你!

答案2

我在 wp-config.php 中使用此代码块进行 nginx 反向代理 => Apache

// When behind reverse proxy
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
    $_SERVER['HTTPS']= 'on';
}

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

相关内容