HTTP状态码_五类
HTTP状态码是用于表示网页服务器HTTP响应状态的3位数字代码。它们分为五类:
-
1xx(信息类): 这些状态码表示接收到请求并继续处理。
- 100 Continue: 客户端应继续发送请求。这用于在客户端发送大请求体之前,先发送请求头,接收服务器确认后再发送请求体。
- 101 Switching Protocols: 服务器根据客户端的请求切换协议。
-
2xx(成功类): 这类状态码表示请求被成功接收、理解和接受。
- 200 OK: 请求成功。回应的主体部分包含请求的资源。
- 201 Created: 请求被成功处理,并创建了新的资源,同时将新资源的URI发送给了客户。
- 202 Accepted: 服务器已接受请求,但尚未处理完成。
-
3xx(重定向类): 完成请求必须进行更进一步的操作。
- 301 Moved Permanently: 请求的网页已永久移动到新位置。
- 302 Found: 临时性重定向。
- 304 Not Modified: 自上次请求后,请求的网页未修改过。
-
4xx(客户端错误类): 这些状态码表示请求可能出错,妨碍了服务器的处理。
- 400 Bad Request: 服务器不理解请求的语法。
- 401 Unauthorized: 请求要求身份验证。
- 403 Forbidden: 服务器拒绝请求。
- 404 Not Found: 服务器找不到请求的网页。
- 408 Request Timeout: 请求超时。
- 499 Client Closed Request: 客户端在服务器尚未发送响应时关闭连接。
-
5xx(服务器错误类): 这些状态码表示服务器在尝试处理请求时发生内部错误。
- 500 Internal Server Error: 服务器遇到错误,无法完成请求。
- 502 Bad Gateway: 作为网关或代理工作的服务器从上游服务器收到无效响应。
- 503 Service Unavailable: 服务器目前无法使用(由于超载或停机维护)。
- 504 Gateway Timeout: 上游服务器超时。
Nginx特定错误码的详解与示例:
-
Nginx 408 Request Timeout:
当客户端在服务器预设的超时时间内没有完成请求的发送时,Nginx 会返回 HTTP 408 错误。例如,如果客户端开始了一个连接但在60秒内没有发送任何数据,或者没有发送完整的请求头,服务器就会因为超时返回408状态码。 -
Nginx 499 Client Closed Request:
当客户端在服务器发送HTTP响应之前关闭连接时,Nginx 会返回 HTTP 499 错误。这通常发生在服务器处理请求时间较长,客户端选择放弃等待并关闭连接的情况下。例如,如果一个客户端向服务器发起一个需要较长处理时间的请求(如大量数据处理或复杂查询),并在服务器完成处理前关闭了连接,服务器会记录一个499错误。这个状态码是Nginx特有的,不是标准的HTTP状态码。
使用 proxy_ignore_client_abort on;
指令可以控制当客户端中断连接时,是否继续与上游服务器保持连接。如果开启此设置,即使客户端关闭了连接,Nginx 仍会等待并记录上游服务器的响应。如果上游服务器响应正常,则记录正常的状态码;如果上游响应错误或超时,将记录相应的错误或504状态码。