我正在尝试在基于docker的云上运行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'];
}