网站偶尔 502 Bad Gateway 完整解决办法
502 本质:反向代理 /nginx 无法连上后端程序(PHP、Node、Java、Tomcat、后端接口),要么后端挂了、卡死、超时,要么配置 / 服务器资源不够。一、先快速判断是谁的问题
- 只有自己打不开,别人能打开本地网络、DNS、缓存问题 → 看下面「本地端解决」
- 所有人都偶尔打不开服务器、Nginx、后端程序、负载过高 → 看下面「服务器端解决」
二、本地端临时解决(用户访问侧)
- 强制刷新:
Ctrl + F5 - 清浏览器缓存 / 无痕模式打开
- 切换手机流量、换 WiFi 测试
- 修改 DNS:改成 223.5.5.5 或 119.29.29.29
- 重启路由器、光猫
三、服务器端根本解决(站长 / 运维必看)
1. 看服务器资源(最常见)
登录服务器看:- CPU 是不是长期满负荷
- 内存是不是爆满、Swap 占用高
- 磁盘是不是满了
df -h
- 加内存、升级配置
- 优化程序、关闭多余进程
- 清理日志、垃圾文件
2. 后端程序挂了 / 卡死(PHP-FPM/Node/Tomcat)
以 Nginx + PHP 为例:- 重启 PHP-FPM
运行
# CentOS
systemctl restart php-fpm
# Ubuntu
systemctl restart php8.1-fpm
- 重启后端服务(Node、Java、Tomcat 对应重启)
- 调整 PHP-FPM 进程数,不要开太多也不要太少
- 程序代码优化,避免死循环、慢查询
3. Nginx 反向代理超时配置
编辑 nginx 配置,增加超时时间:nginx
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
改完重载 Nginx:
bash
运行
nginx -t
systemctl reload nginx
4. 网站程序数据库慢
MySQL 卡顿、慢查询、连接数打满也会 502- 优化数据库索引
- 清理慢查询
- 调高 MySQL 最大连接数
5. CDN 导致的 502
如果用了云厂商 CDN:- 回源 IP 配置错误
- 源站防火墙拦截了 CDN 节点 IP解决:放行 CDN 节点 IP、检查回源地址是否正确
四、最简应急操作(马上能缓解)
- 重启 Nginx
- 重启 PHP / 后端程序
- 看服务器内存 CPU 是否爆满
- 清理日志释放磁盘空间
