HTTP 状态码排查手册:502、504、403 到底是谁的问题
排查线上问题时,HTTP 状态码是最快的定位线索。但 502 和 504 到底是谁的问题、403 和 401 有什么区别,很多初学者分不清。这篇按「看到什么状态码 → 先查哪里」的思路整理一份排查手册。
502 Bad Gateway:网关活着,但后面的应用死了。看到 502 先 curl 127.0.0.1:端口 验证后端进程是否存活——大概率是应用崩溃、端口没监听或反向代理配置的端口写错。Nginx 日志里的 connect() failed 会直接告诉你是拒绝连接还是超时。
504 Gateway Timeout:网关活着,后端也活着,但处理太慢超过网关等待时间。典型场景是慢 SQL、外部接口卡死。排查方向是后端耗时(慢日志、链路追踪),而不是网关本身。临时缓解可调大 proxy_read_timeout,但根本解决还是优化慢查询。
403 Forbidden 与 401 Unauthorized:401 是「没登录」(未认证),403 是「登录了但没权限」(无权访问)。看到 403 依次检查:文件权限(Nginx worker 用户可读)、SELinux 拦截、目录缺少 index 与 autoindex 配置。
404 Not Found:请求路径没有匹配的资源。反向代理场景下,80% 的 404 是 proxy_pass 末尾斜杠与 location 前缀拼接问题;静态资源 404 则多为 root/alias 路径拼错或文件确实不存在。
5xx 突然全站出现:优先回滚最近的变更(发布、配置、证书),再查后端日志。全站故障时「先恢复、后定位」是原则,别在第一时间深挖根因。
习惯建议:把常见状态码与排查动作做成团队手册,配合 access_log 的 status 字段做监控告警,大多数问题在用户反馈前就能发现。状态码是服务器与你的对话,读懂它们排障效率翻倍。
- 点赞
- 收藏
- 关注作者
评论(0)