You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WordPress站点配置SSL后出现502 Bad Gateway(SSL握手错误:版本号不匹配)求助

解决WordPress + Nginx SSL配置后的502 Bad Gateway错误

从你的错误日志和配置来看,问题的核心很明确:Nginx试图与上游的localhost:3000建立SSL连接,但你的WordPress服务在3000端口运行的是HTTP而非HTTPS,导致SSL握手失败,触发502错误。日志里的SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number)就是最直接的证据。

下面是分步解决的方案:

1. 修正Nginx的反向代理配置

你之前尝试把proxy_pass改成http后网站能部分加载,但静态资源和后台无法访问,这是因为缺少必要的请求头,导致WordPress不知道用户是通过HTTPS访问的,进而输出HTTP格式的资源链接。

修改你的example.com的443 server块中的location /部分:

location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 关键:告诉WordPress当前请求是HTTPS协议
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;
}

2. 配置WordPress强制HTTPS并识别反向代理请求

打开WordPress根目录下的wp-config.php,添加以下代码(放在/* That's all, stop editing! Happy publishing. */之前):

# 强制后台使用HTTPS
define('FORCE_SSL_ADMIN', true);

# 让WordPress识别反向代理传递的HTTPS请求
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

# 确保siteurl和homeurl是HTTPS(你已经设置过,但可以再确认)
define('WP_SITEURL', 'https://example.com');
define('WP_HOME', 'https://example.com');

3. 重启服务并验证

  • 重启Nginx:sudo systemctl restart nginx
  • 重启运行WordPress的服务(如果是PHP-FPM:sudo systemctl restart php-fpm,如果是其他运行在3000端口的HTTP服务器,也对应重启)

完成后访问你的网站,静态资源和/wp-login应该都能正常加载,502错误也会消失。

额外检查点

  • 确认3000端口的服务确实在运行:curl http://localhost:3000,如果能返回WordPress的页面内容,说明上游服务正常。
  • 检查Nginx错误日志,确认没有新的报错:tail -f /var/log/nginx/error.log

内容的提问来源于stack exchange,提问作者DavidPH

火山引擎 最新活动