视频加载失败

502、503、403 到底是谁的问题?一份 HTTP 报错责任侧判断指南

3424 字
17 分钟
502、503、403 到底是谁的问题?一份 HTTP 报错责任侧判断指南

502、503、403 到底是谁的问题?一份 HTTP 报错责任侧判断指南#

线上服务、API 调用、网页访问、小程序接口联调时,经常会遇到 502、503、403、504 这类报错。

很多人的第一反应是:是不是我本地网络坏了?是不是服务商挂了?是不是账号被封了?

这篇文章整理一个实用判断框架:先看状态码,再看影响范围,最后用换网络、换账号、换请求方式交叉验证。目标不是背状态码,而是快速判断责任侧,减少无效排查。


先记住一句话#

如果只想快速判断,可以先记这几条:

状态码直觉判断更常见的问题侧
502 Bad Gateway网关连不上后端,或后端返回了坏响应服务商 / 服务端 / 上游服务
503 Service Unavailable服务暂时不可用、维护、过载或限流服务商 / 服务端
504 Gateway Timeout网关等上游等太久,超时了服务商 / 服务端 / 上游链路
403 Forbidden服务器收到了请求,但明确拒绝访问权限 / 风控 / IP / 地域 / 请求策略
401 Unauthorized没认证,或认证失败登录态 / Token / API Key / 签名
404 Not Found资源或路由不存在URL、路径、资源、路由配置
429 Too Many Requests请求太频繁调用方频率 / 服务商限流规则
500 Internal Server Error服务端内部异常服务商 / 服务端程序

粗略地说:

  • 502、503、504、500:多数偏服务端或服务商侧。
  • 401、403、429:多数偏账号、权限、风控、限流或调用方式。
  • 404:多数先查 URL、路由和资源是否存在。

502:Bad Gateway,通常不是你电脑坏了#

502 Bad Gateway 的意思是:你访问的服务器前面通常有一层网关、反向代理、负载均衡或 CDN,它去找后端服务时,拿到了无效响应,或者根本没正常拿到响应。

常见场景:

  1. Nginx / CDN / 负载均衡还活着,但后端应用挂了。
  2. 后端服务端口没启动,网关转发失败。
  3. 上游服务崩溃、重启、连接被拒绝。
  4. 网关配置错误,例如 upstream 地址、端口、协议写错。
  5. 后端返回了不符合网关预期的响应。

谁的问题概率更大?#

多数情况下,502 更偏 服务商 / 服务端 / 上游服务。

但如果你自己在开发反向代理,也可能是你自己的网关配置问题。例如:

proxy_pass http://127.0.0.1:3000;

如果 3000 端口上的应用没启动,前面的 Nginx 就可能返回 502。

你应该先查什么?#

  • 如果你是普通访问者:换网络、问别人是否也打不开、看服务商状态页。
  • 如果你是开发者:查网关日志、应用进程、upstream 地址、后端端口、容器健康状态。
  • 如果是 API:记录请求时间、接口路径、响应头,把错误样本发给服务商更容易定位。

503:Service Unavailable,服务暂时不可用#

503 Service Unavailable 表示服务当前无法处理请求。

它不一定代表服务彻底挂了,更常见的是“暂时不可用”。

常见原因:

  1. 服务维护中。
  2. 流量过大,服务过载。
  3. 后端依赖故障,例如数据库、缓存、队列不可用。
  4. 服务商启用了限流或熔断。
  5. 容器正在启动,健康检查还没通过。
  6. CDN 或网关层临时拦截。

谁的问题概率更大?#

503 通常更偏 服务商 / 服务端。

但有一个例外:如果你疯狂重试、并发太高,服务商可能用 503 或 429 表示你被临时限流。这时问题不完全是服务坏了,而是调用方式触发了限制。

你应该先查什么?#

  • 看响应头里是否有 Retry-After。
  • 降低请求频率,过几分钟再试。
  • 查询服务商状态页或公告。
  • 如果是自有服务,检查 CPU、内存、连接池、数据库、队列和容器健康检查。

504:Gateway Timeout,网关等后端等超时了#

504 Gateway Timeout 和 502 类似,都和网关、代理、上游服务有关。

区别是:

  • 502 更像“上游返回不正常”。
  • 504 更像“上游一直没及时返回”。

常见原因:

  1. 后端接口处理太慢。
  2. 数据库查询慢。
  3. 第三方 API 响应慢。
  4. 网关超时时间设置太短。
  5. 服务之间网络链路不稳定。

谁的问题概率更大?#

多数是 服务端或上游链路。

如果只有你本地访问超时,别人正常,则要再检查本地网络、代理、DNS、运营商路由。


403:Forbidden,不是服务坏了,而是“不让你访问”#

403 Forbidden 最容易被误判。

它的含义是:服务器收到了你的请求,也理解你的请求,但它决定拒绝。

这和 502、503 不一样。403 通常不是服务不可用,而是访问策略不允许。

常见原因:

  1. 当前账号没有权限。
  2. 没有登录,或登录态失效。
  3. Token / Cookie / API Key 不正确。
  4. IP 被封、被限流、命中黑名单。
  5. 地域限制,例如某些服务限制特定国家或地区访问。
  6. WAF / 防火墙认为请求异常。
  7. Referer、Origin、User-Agent、签名参数不符合要求。
  8. 访问了禁止直接访问的静态资源或目录。
  9. 对方服务禁止爬虫、脚本或非浏览器请求。

谁的问题概率更大?#

403 更偏 权限、账号、风控、IP、访问策略。

它不一定是你本地网络坏了,也不一定是服务商挂了,而是服务端主动拒绝了当前这次访问。

你应该先查什么?#

按照这个顺序排查:

  1. 是否登录?登录态是否过期?
  2. 当前账号是否有权限访问该资源?
  3. 换无痕窗口是否正常?
  4. 换账号是否正常?
  5. 换手机热点是否正常?
  6. API Key / Token / 签名 / 请求头是否正确?
  7. 是否请求太频繁,触发风控?
  8. 响应体里是否写了 permission denied、forbidden、access denied、invalid token 之类的原因?

如果你用脚本请求网页,403 很可能和请求头有关。可以对比浏览器请求和脚本请求的差异,例如:

Terminal window
curl -I https://example.com

再看是否需要补充合法的 User-Agent、Referer 或认证信息。


401:Unauthorized,优先查认证#

401 Unauthorized 表示认证失败。

它和 403 的区别可以这样理解:

  • 401:你还没证明你是谁,或者证明失败。
  • 403:你可能已经被识别了,但你没有权限。

常见原因:

  1. 没登录。
  2. Token 过期。
  3. API Key 错误。
  4. 签名算法或时间戳错误。
  5. Authorization 请求头没带上。

API 调用里看到 401,第一优先级不是查服务器是否挂了,而是查认证参数。


429:Too Many Requests,频率或额度问题#

429 Too Many Requests 表示请求太频繁。

常见原因:

  1. 单位时间请求次数超过限制。
  2. 并发数太高。
  3. 免费额度或套餐额度用完。
  4. 多个程序共用同一个 Key,合计触发限流。
  5. 服务商按 IP、账号、Token、组织维度限流。

排查重点:

  • 看响应头是否有 Retry-After、X-RateLimit-Remaining、X-RateLimit-Reset。
  • 降低并发和重试频率。
  • 给重试加指数退避,不要固定间隔疯狂重试。
  • 确认是否多个任务共享同一个账号或 Key。

500:Internal Server Error,多数是服务端程序异常#

500 Internal Server Error 表示服务端内部错误。

常见原因:

  1. 服务端代码抛异常。
  2. 数据库查询失败。
  3. 配置缺失。
  4. 文件权限错误。
  5. 第三方依赖返回异常,服务端没有处理好。

如果你是使用别人的服务,500 多数需要服务商修。

如果这是你自己的接口,第一时间看应用日志,而不是只看浏览器控制台。


判断责任侧:用“影响范围”比单看状态码更可靠#

状态码只能给方向,不能直接定责。

更可靠的判断方式是看影响范围。

只有你一个人出问题#

更可能是:

  • 本地网络问题
  • DNS 问题
  • 代理 / VPN 问题
  • 浏览器缓存或插件问题
  • Cookie、Token、登录态问题
  • 你的 IP 被限流或封禁
  • 你的账号权限异常

建议动作:

  1. 换无痕窗口。
  2. 换浏览器。
  3. 换手机热点。
  4. 退出登录后重新登录。
  5. 清理站点 Cookie。
  6. 临时关闭代理 / VPN。

很多人同时出问题#

更可能是:

  • 服务商故障
  • 服务维护
  • CDN 或网关异常
  • 上游依赖故障
  • 数据库、缓存、对象存储等基础服务异常

建议动作:

  1. 查服务商状态页。
  2. 看官方公告。
  3. 看社群或监控告警。
  4. 等待恢复,避免短时间高频重试。

换网络就好了#

更可能是:

  • 当前网络出口 IP 被限制
  • 运营商路由问题
  • 公司 / 校园网拦截
  • 本地代理策略问题
  • DNS 解析到了异常节点

建议动作:

Terminal window
nslookup example.com
curl -I https://example.com

如果命令行和浏览器表现不同,还要检查终端里的代理环境变量:

Terminal window
env | grep -i proxy

换账号就好了#

更可能是:

  • 原账号没有权限
  • 原账号被风控
  • 原账号额度用完
  • 原账号所在组织或租户配置异常

这类情况常见于后台系统、云平台、API 平台和企业应用。


API 调用时的排查顺序#

如果你是在调接口,可以按这个顺序排查:

  1. 记录完整状态码和响应体:不要只截图“请求失败”。
  2. 看响应头:尤其是 Retry-After、限流相关字段、网关/CDN 标识。
  3. 确认 URL 和 Method:GET、POST、路径、版本号是否正确。
  4. 确认认证信息:Token、API Key、签名、时间戳、Authorization 头。
  5. 降低请求频率:排除 429、风控型 403、临时 503。
  6. 换网络和机器:区分本地环境与服务端问题。
  7. 查服务商状态页:确认是否全局故障。
  8. 拿请求 ID 找服务商:很多平台会在响应头里给 request-id、trace-id。

一个好的错误样本至少包含:

时间:2026-07-19 14:30:00
接口:POST /v1/example
状态码:503
响应体:service unavailable
响应头:request-id / trace-id / retry-after
影响范围:只我这台机器,还是多人都复现
复现频率:偶发 / 稳定复现
是否换网络验证:是 / 否

网页访问时的排查顺序#

如果是浏览器打开网页报错,可以这样做:

  1. 刷新一次,排除偶发网络抖动。
  2. 打开无痕窗口,排除 Cookie 和插件影响。
  3. 换浏览器,排除浏览器扩展或缓存问题。
  4. 换手机热点,排除当前网络问题。
  5. 问别人是否也打不开。
  6. 查服务商状态页或公告。
  7. 打开开发者工具 Network,查看具体是主页面、接口、图片还是脚本报错。

有时候页面整体能打开,但某个接口 403 或 503,这说明问题不一定在主站,而可能在某个 API、CDN 资源或第三方服务。


自己维护服务时:不同状态码该看哪里#

如果你维护的是自己的服务,可以按下面这张表定位:

状态码优先检查
502Nginx / 网关日志、upstream 配置、后端端口、应用进程是否存活
503服务健康检查、负载、限流、熔断、容器启动状态、依赖服务
504慢接口、数据库慢查询、第三方 API、网关超时配置
403权限系统、WAF、防火墙、IP 黑名单、鉴权中间件、静态资源权限
401登录态、Token 校验、Authorization 头、签名逻辑、时钟偏差
404路由、资源路径、部署产物、前后端 base path、大小写问题
429限流规则、用户/IP/Token 配额、重试策略、队列积压
500应用日志、异常堆栈、数据库、配置、依赖服务

尤其要注意:浏览器里看到的状态码只是结果,真正原因通常在服务端日志、网关日志、请求 ID 和监控里。


最后给一张速查表#

现象更可能原因先做什么
502 大面积出现后端服务或网关异常查服务状态 / 网关日志
503 偶发出现服务过载或临时限流等待、降低频率、看 Retry-After
504 固定接口出现接口慢或上游慢查慢查询和超时配置
403 只你出现权限、IP、账号、Cookie、风控换账号、换网络、查登录态
403 脚本出现、浏览器正常请求头、Cookie、Referer、反爬策略对比浏览器请求头
401 出现认证失败查 Token / API Key / Authorization
429 出现请求过快或额度不足降并发、退避重试、查限额
500 出现服务端内部异常看服务端日志或联系服务商

总结#

遇到 HTTP 报错,不要只问“是不是我本地的问题”。更有效的方式是:

  1. 先看状态码类型:网关类、权限类、认证类、限流类、服务端异常类。
  2. 再看影响范围:只有我、部分人、所有人、某个网络、某个账号。
  3. 最后交叉验证:换网络、换账号、换浏览器、降频、查响应头和服务状态页。

如果要形成一个最短判断:

  • 502 / 503 / 504 / 500:优先怀疑服务端、服务商或上游链路。
  • 401 / 403 / 429:优先怀疑认证、权限、风控、额度或调用方式。
  • 404:优先检查 URL、路径、路由和资源是否真的存在。

排查的关键不是背熟所有状态码,而是用状态码快速缩小范围,然后用影响范围和交叉验证把责任侧定位清楚。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

502、503、403 到底是谁的问题?一份 HTTP 报错责任侧判断指南
https://blog.caishu.site/posts/http-error-502-503-403-troubleshooting-2026-07-19/
作者
皮耶罗
发布于
2026-07-19
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
皮耶罗
在超市后门,和喜欢的故事一起短暂放空。
公告
这里记录了技术探索、日常反思和开源旅程。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
59
分类
16
标签
237
总字数
121,121
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录