实战:Nginx 返回 502,如何一步步检查上游
502 表示网关没有得到期望的上游响应。它不等于域名解析一定错误,也不等于网站数据库损坏。先沿请求路径逐段测试,往往能快速确定范围。
找到实际生效的配置
先确认是宿主机 Nginx、OpenResty 容器还是其他代理。读取生效配置中的 proxy_pass、location 和请求头,避免编辑了一份没有被加载的文件。完整配置可能含敏感信息,不要原样公开。
从代理环境请求上游
在代理所在网络空间内请求 upstream。宿主机的 127.0.0.1 与桥接容器里的地址不同;服务名则依赖 Docker 网络与 DNS。测试时保留正确 Host 与协议,因为一些应用会做来源校验。
把错误日志与现象对应起来
connection refused 常提示监听或地址问题;upstream timed out 要检查连接与响应阶段;prematurely closed connection 需要结合应用崩溃与协议设置。不要把所有错误都用增大 timeout 解决。
最小改动并验证完整路径
先校验配置,通过后重载。分别测试上游、HTTPS 域名、文章和接口。WebSocket 与流式响应需要单独检查连接升级、缓冲与超时。重载成功仅代表配置接受,不代表业务已经正常。
操作参考
1 | nginx -t |
示例占位符需替换为自己的环境。涉及生产服务时先保留备份,阅读命令用途后再执行。
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 SkynetX!