【问题标题】:Changing Wordpress http to https behind a Load Balancer with ProxyPass使用 ProxyPass 在负载均衡器后面将 Wordpress http 更改为 https
【发布时间】:2017-10-15 05:50:09
【问题描述】:

我在另一个(主)网络服务器后面运行 Wordpress。主服务器确实有一个规则,将所有到 /wpa 的请求重定向到带有 ProxyPass 的 Wordpress 服务器

ProxyPass /wpa/ http://vm.example.com/wpa/
ProxyPassReverse /wpa/ http://vm.example.com/wpa/

Wordpress 本身在 Wordpress 根目录中附带了这个 .htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wpa/

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wpa/index.php [L]
</IfModule>

http 一切正常。但是我想切换到https,这是一个问题。 SSL 终止是在负载均衡器上完成的。

问题是,负载均衡器后面的所有流量都是非 SSL 的。 如果我将 Wordpress homeurl 和 siteurl 从 http 更改为 https,我会收到重定向错误(循环)。

我尝试在主服务器上使用这样的规则:

RewriteCond %{HTTPS} !=on
RewriteRule ^/wpa/(.*)$ https://www.example.com/wpa/$1 [L,R=301]

仍然收到重定向错误。我试图检查 RewriteLog,但找不到正确的信息。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: wordpress apache ssl mod-rewrite url-rewriting


    【解决方案1】:
    1. 在 wp-config.php 中使用以下代码,

    define('FORCE_SSL_ADMIN', true);
    定义('FORCE_SSL_LOGIN', true);
    if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS']='on';

    1. 检查您的 .htaccess 文件,它应该是干净的。
    2. 重新保存固定链接。
    3. 如果使用 CDN,请启用 443 端口。

    【讨论】:

    • 谢谢,$_SERVER['HTTPS']='on' 对我有用。我们还使用 $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'] 来使用主 apache 服务器的主机名/URL。
    • 更多:我使用旧的 htaccess。我之前没有清理过,但效果很好。
    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多