疑难杂症 · 18 7 月, 2025 0

Nginx反代WordPress访问wp-admin遇到502错误:原因与解决

问题描述

在使用Nginx反向代理WordPress后台时,访问/wp-admin页面出现502错误。这类错误经常出现在WordPress登录后台或插件较多的站点,尤其是开启缓存、多站点、多Cookie或SSO插件时。

原因分析

查看Nginx错误日志/var/log/nginx/error.log,看到如下记录:

[error] upstream sent too big header while reading response header from upstream

Nginx作为反向代理时,会接收后端服务器(如Apache或PHP-FPM)返回的响应头。默认情况下,Nginx 分配的响应头缓冲区太小(通常只有4K或8K),而WordPress后台可能发送了大量Set-CookieLocation或其他header。

结果就是:响应头太大 → 超出Nginx默认缓冲区 → 报“502 Bad Gateway”

解决方案:增加Nginx的缓冲区配置

在你的Nginx配置文件中(nginx.conf或虚拟主机配置文件),为反向代理的location段或 server段添加以下配置:

proxy_buffer_size          128k;
proxy_buffers              4 256k;
proxy_busy_buffers_size    256k;

参数说明

参数 默认值 建议值 说明
proxy_buffer_size 4k/8k 128k 控制响应头缓冲区大小
proxy_buffers 8 4k 4 256k 控制响应体缓冲区个数与大小
proxy_busy_buffers_size 8k 256k 高负载时允许的最大缓冲大小

修改完成后,用nginx -s reload重载设置。重新访问/wp-admin,后台应能正常打开,不再出现502错误。