Wordpress的标准做法,包括前端反代配置 + 后端 wp-config.php 配置的完整写法

社区话题 wordpress开发 WordPress 在负载均衡 / 内网穿透场景下 HTTPS 判断失效的原因与解决方案 Wordpress的标准做法,包括前端反代配置 + 后端 wp-config.php 配置的完整写法

#951

追光
管理员

下面是整理「更完美方案」的标准做法,包括前端反代配置 + 后端 wp-config.php 配置的完整写法,便于直接复制使用?

✅ 前端反向代理配置(Nginx 示例)

确保在将请求转发给 WordPress 后端时,把真实的访问协议一起告诉它:

location / {
    proxy_set_header X-Forwarded-Proto $scheme;    # 把 https/http 告诉后端
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://backend-ip:port;
}

如果你的反代前端一定为 HTTPS,也可以写成:

proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;

✅ 后端 WordPress (wp-config.php) 识别写法

在 wp-config.php 中找到:

/** Sets up WordPress vars and included files. */
require_once ABSPATH . ‘wp-settings.php’;

在它上方加入下面这一段逻辑:

/*
 * 如果是通过反代转发的 https,则强制告知 WordPress 当前是 https
 */
if (
    isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
    strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https'
) {
    $_SERVER['HTTPS'] = 'on';
}

// 后台、登录强制 https(可选)
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

? 流程示意图

用户浏览器 (HTTPS)

负载均衡 / Nginx 反代
自动注入 X-Forwarded-Proto=https

后端 WordPress 收到(HTTP),识别该头 → 设置 $_SERVER[‘HTTPS’]=’on’

WordPress 正确判断 https,后台/资源全部走 https,无跳转问题 ✅