问题描述
在使用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-Cookie、Location或其他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错误。
