502-bad-gateway

502 Bad Gateway 的定位与修复

现象

浏览器或客户端收到 502 Bad Gateway。网关(Nginx、Ingress、负载均衡)无法从上游拿到有效响应,通常是后端不可达、崩溃或返回了非法响应。

快速定位

curl -v http://<gateway>/<path>
tail -f /var/log/nginx/error.log
journalctl -u <backend> --since '10 min ago'
ss -lntp | grep ':<backend-port>'
systemctl status <backend>
docker ps
kubectl get pod -n <ns>
kubectl logs <pod> --previous

常见根因

  1. 后端服务未启动、崩溃或端口变化。
  2. upstream 地址/端口配置错误,或 DNS 解析失败。
  3. 后端响应超时,网关主动断开。
  4. 后端返回的响应头/协议不符合 HTTP 规范。
  5. 连接池耗尽、文件描述符不足或防火墙拦截。
  6. K8s 中 Service/Endpoints 为空,或 Pod 未就绪。

修复

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. 502 和 504 的关键区别是什么?
  2. Nginx 返回 502 时,第一站应该看什么?
  3. Kubernetes 中 502 还要检查哪些对象?
答案
  1. 502 是网关拿不到有效响应,后端可能不可达、崩溃或响应非法。504 是已连上上游但在超时内没拿到完整响应。
  2. 看网关 error.log 里的上游地址和错误原因。再对照后端是否启动、端口是否在监听。
  3. 检查 Service selector 与 Endpoints 是否为空。再确认 Pod 是否 Ready。