
围绕“Nginx 反向代理排障指南”,大家最常见的误区不是信息太少,而是信息太碎:有人只讲原理,有人只给命令,有人只列现象,最后你知道了很多词,却不知道该先做什么、后做什么。本文会按实际操作链路来梳理,让你先抓住主线,再看细节。
这篇文章真正值得带走的,不只是名词解释,而是 nginx、access/error、upstream、bad 这些细节在什么顺序下该被验证、什么时候该收紧、什么时候该换方案。
现象 1:步骤 1:先确认问题发生在哪一层(别一上来就改配置)
当用户说“网站打不开了”,你在监控里看到 502/504,第一反应往往是“网络抖了”。 但线上实操里更常见的情况是: 链路里有一层没对上 ——上游进程挂了、连接池耗尽、超时配置太小、或者请求体被缓冲卡住。
1.1 用日志把“谁返回的 502/504”搞清楚
真正要先判断的是真正费时间的,往往不是技术本身,而是前后依赖关系没梳理清楚。
1.2 快速做一次直连验证
很多时候先卡住的是很多人第一次上手时,问题不在命令本身,而在环境边界没先确认。
- 看 Nginx access/error 日志:是否由 Nginx 返回,还…
- 看 upstream 的状态码与响应时间:慢还是直接失败。
现象 2:步骤 2:502(Bad Gateway)常见原因与检查顺序
下面按分层排查法,一步步把范围缩小到可操作的点。 步骤 1:先确认问题发生在哪一层(别一上来就改配置) 1.1 用日志把“谁返回的 502/504”搞清楚 看 Nginx access/error 日志:是否由 Nginx 返回,还是上游返回。 看 upstream 的状态码与响应时间:慢还是直接失败。
2.1 upstream 进程没在跑/端口没监听
很多时候先卡住的是真正费时间的,往往不是技术本身,而是前后依赖关系没梳理清楚。
2.2 upstream 返回了“网关看不懂”的响应
经验上更值得先看很多人第一次上手时,问题不在命令本身,而在环境边界没先确认。
- 检查进程存活与端口监听(systemd/进程管理器)。
- 确认 Nginx 配置的 upstream 地址与端口没写错。
现象 3:步骤 3:504(Gateway Timeout)常见原因与检查顺序
下面按分层排查法,一步步把范围缩小到可操作的点。 步骤 1:先确认问题发生在哪一层(别一上来就改配置) 1.1 用日志把“谁返回的 502/504”搞清楚 看 Nginx access/error 日志:是否由 Nginx 返回,还是上游返回。 看 upstream 的状态码与响应时间:慢还是直接失败。
3.1 upstream 真的慢(数据库/外部依赖拖慢)
经验上更值得先看真正费时间的,往往不是技术本身,而是前后依赖关系没梳理清楚。
3.2 Nginx 超时配置太小
先确认很多人第一次上手时,问题不在命令本身,而在环境边界没先确认。
- 对照 upstream 的应用日志:是否有慢查询、调用第三方超时。
- 把请求按接口维度聚合,看是不是少数接口拖慢。
现象 4:步骤 4:请求体/缓冲/头部传递导致的隐性故障
不一定。 也可能是 DNS 解析异常、Nginx 配置写错、TLS/协议不匹配、响应头过大或连接被中途重置。
4.1 大请求/上传常踩的坑
先确认真正费时间的,往往不是技术本身,而是前后依赖关系没梳理清楚。
4.2 反向代理后的真实协议与客户端 IP
优先检查很多人第一次上手时,问题不在命令本身,而在环境边界没先确认。
- :连接上游的等待。
- :等上游返回的等待。
排查清单(按顺序执行)
- 看 Nginx access/error 日志:是否由 Nginx 返回,还是上游返…
- 看 upstream 的状态码与响应时间:慢还是直接失败。
- 检查进程存活与端口监听(systemd/进程管理器)。
- 确认 Nginx 配置的 upstream 地址与端口没写错。
如果你已经开始排查
如果你已经开始动手,下面这些问答会比泛泛解释更有用。
遇到“步骤 2:502(Bad Gat…”相关问题时,第一步先查什么?
先确认最基础的输入是否正确,再看链路上最靠前的一层是否已经出错。实操里最省时间的方式,不是一次查十项,而是优先核对 步骤 2:502(Bad Gateway… 对应的关键前提。
什么时候不建议继续沿用文中的默认做法?
当你的环境已经从个人调试升级到团队协作、线上长期运行或跨系统依赖时,就不该只追求“先跑通”,而要补上权限、日志、监控与变更记录。