在运维和 Web 开发中,HTTP 状态码(HTTP Status Codes) 是服务器对客户端请求的标准化响应,用于表示请求的处理结果。以下是常见的 HTTP 状态码及其含义,归纳为 5 大类:
1xx(信息类状态码)
服务器已接收请求,需要进一步处理:
- 100 Continue
- 客户端可继续发送请求(通常在 POST 大文件前使用)。
- 101 Switching Protocols
- 服务器同意升级协议(如从 HTTP 升级到 WebSocket)。
- 102 Processing (WebDAV)
- 服务器已接收请求但仍在处理(用于长时间操作)。
2xx(成功类状态码)
请求已成功完成:
- 200 OK
- 请求成功(最常见的状态码,如 GET/POST 成功)。
- 201 Created
- 资源已创建(如 POST 新建数据成功)。
- 202 Accepted
- 请求已接受但未完成(异步任务)。
- 204 No Content
- 请求成功,但无返回内容(如 DELETE 成功)。
- 206 Partial Content
- 返回部分内容(用于分片下载或断点续传)。
3xx(重定向类状态码)
客户端需进一步操作:
- 301 Moved Permanently
- 资源已永久重定向(SEO 权重会转移)。
- 302 Found (or 307 Temporary Redirect)
- 资源临时重定向(SEO 权重不转移)。
- 304 Not Modified
- 资源未修改(客户端可使用本地缓存,结合
If-Modified-Since)。
- 资源未修改(客户端可使用本地缓存,结合
4xx(客户端错误类状态码)
客户端请求有误:
- 400 Bad Request
- 请求语法错误(如参数格式错误)。
- 401 Unauthorized
- 需身份验证(未携带认证信息)。
- 403 Forbidden
- 服务器拒绝访问(权限不足)。
- 404 Not Found
- 资源不存在(路径错误或资源已删除)。
- 405 Method Not Allowed
- HTTP 方法不被允许(如 GET 接口用 POST 访问)。
- 429 Too Many Requests
- 请求过于频繁(限流触发)。
5xx(服务器错误类状态码)
服务器处理请求失败:
- 500 Internal Server Error
- 服务器内部错误(代码异常、数据库崩溃等)。
- 502 Bad Gateway
- 网关/代理服务器收到上游服务器无效响应(如 Nginx 后端服务宕机)。
- 503 Service Unavailable
- 服务不可用(服务器过载或维护)。
- 504 Gateway Timeout
- 网关超时(上游服务器未及时响应)。
运维排查关键状态码
| 状态码 | 可能原因 | 排查方向 |
|---|---|---|
| 400 | 客户端请求格式错误 | 检查请求参数、Headers |
| 401 | 未认证或 Token 失效 | 检查认证逻辑(如 JWT/OAuth) |
| 403 | 权限不足或 IP 被禁 | 检查文件权限、防火墙规则 |
| 404 | 路径错误或服务未启动 | 检查 URL、服务进程 |
| 429 | 客户端请求限流 | 检查限流配置(如 Nginx limit_req) |
| 500 | 服务器代码异常 | 查看应用日志(如 journalctl) |
| 502 | 后端服务不可用 | 检查上游服务(如 curl http://backend) |
| 503 | 服务过载或维护 | 检查 CPU/内存、负载均衡 |
| 504 | 后端响应超时 | 调整代理超时时间(如 Nginx proxy_timeout) |
常用工具
curl -v:查看详细请求/响应头。telnet或nc:测试端口是否开放。- Nginx/Access Log:分析请求日志。
- Prometheus/Grafana:监控 5xx 错误率。
掌握这些状态码能快速定位问题,高效运维 Web 服务!