打开网站有时出现502 Bad Gateway,怎么解决?

网站偶尔 502 Bad Gateway 完整解决办法

502 本质反向代理 /nginx 无法连上后端程序(PHP、Node、Java、Tomcat、后端接口),要么后端挂了、卡死、超时,要么配置 / 服务器资源不够。

一、先快速判断是谁的问题

  1. 只有自己打不开,别人能打开本地网络、DNS、缓存问题 → 看下面「本地端解决」
  2. 所有人都偶尔打不开服务器、Nginx、后端程序、负载过高 → 看下面「服务器端解决」

二、本地端临时解决(用户访问侧)

  1. 强制刷新:Ctrl + F5
  2. 清浏览器缓存 / 无痕模式打开
  3. 切换手机流量、换 WiFi 测试
  4. 修改 DNS:改成 223.5.5.5119.29.29.29
  5. 重启路由器、光猫

三、服务器端根本解决(站长 / 运维必看)

1. 看服务器资源(最常见)

登录服务器看:
  • CPU 是不是长期满负荷
  • 内存是不是爆满、Swap 占用高
  • 磁盘是不是满了 df -h
解决
  • 加内存、升级配置
  • 优化程序、关闭多余进程
  • 清理日志、垃圾文件

2. 后端程序挂了 / 卡死(PHP-FPM/Node/Tomcat)

以 Nginx + PHP 为例:
  1. 重启 PHP-FPM
bash
运行
# CentOS
systemctl restart php-fpm

# Ubuntu
systemctl restart php8.1-fpm
  1. 重启后端服务(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、检查回源地址是否正确

四、最简应急操作(马上能缓解)

  1. 重启 Nginx
  2. 重启 PHP / 后端程序
  3. 看服务器内存 CPU 是否爆满
  4. 清理日志释放磁盘空间

延伸阅读: