任何接收到 HTTP 请求的 Web 服务器都会返回一个 HTTP 状态码。这些状态码是来自服务器的简短说明,用于描述当前情况。它不包含任何实际的网站内容。相反,它是对接收到 HTTP 请求后处理情况的报告。在许多情况下,这些状态码对于诊断各种服务器/客户端问题非常重要。
这些状态码是三位整数,每个都表示不同的状态。根据首位数字,HTTP 状态码分为五类:
-
信息响应:值范围在 100 到 199 之间。它表示请求已收到并正在处理。
-
成功响应:值范围在 200 到 299 之间。它表示操作已被成功接收、理解并接受。
-
重定向消息:值范围在 300 到 399 之间。它意味着需要采取进一步的操作才能完成请求。
-
客户端错误响应:值范围在 400 到 499 之间。这表示请求包含错误的语法,或者无法被满足。
-
服务器错误响应:值范围在 500 到 599 之间。它意味着服务器未能处理有效的请求。
在本指南中,我们将从系统管理员的角度讨论每个人都会遇到的一些最常见的 HTTP 错误代码(4xx 和 5xx)。许多情况都会导致 Web 服务器返回特定的代码。此外,本教程还将讨论潜在的原因和解决方案。
客户端错误与服务器错误
错误代码 400 到 499 是由用户客户端(Web 浏览器或任何 HTTP 客户端)引起的。虽然这些错误大多与客户端相关,但了解用户遇到的是哪个代码非常有用。这有助于确定潜在问题是否可以在服务器端进行部署。
另一方面,服务器错误(HTTP 状态码 500 到 599)发生在服务器意识到发生错误或无法处理请求时。
常规故障排除
无论遇到什么错误,每当遇到任何 HTTP 错误代码时,您都应该首先测试以下一些通用的故障排除提示:
-
使用 Web 浏览器测试服务器时,在对服务器进行任何更改后刷新浏览器是一个好习惯。
-
服务器日志保存了有关服务器如何处理请求的详细信息。例如,像 Apache 和 Nginx 这样流行的 Web 服务器会生成文件 access.log 以及 error.log。检查这些日志可以提供有用的信息。
-
HTTP 错误代码是标准的一部分。程序根据它们处理请求的方式来实现这一标准。这意味着返回特定的状态码取决于服务器软件如何处理特定的错误。
本指南应作为找出问题根源的有用的指导方针。
常见 HTTP 错误
-
常见客户端错误

错误代码 400 表示错误请求(Bad Request)。它说明发送到服务器 of HTTP 请求包含无效语法。让我们来看看导致错误语法的潜在原因:
-
与网站相关的 Cookie 可能已损坏。清除浏览器 Cookie 和缓存可能会解决此问题。
-
发送请求的 Web 浏览器可能存在故障/错误。
-
这也可能是由于手动构建 HTTP 请求时的错误导致的错误请求,例如不正确地使用了 curl.

当请求尝试访问未经过身份验证或未正确进行身份验证的资源时,会发生错误代码 401(未授权)。要解决此问题,用户必须提供必要的凭据以访问受保护的资源。
一个典型的例子是当用户尝试访问受 HTTP 身份验证保护的资源时。在这种情况下,除非提供有效的用户名 and 密码,否则用户将收到 401 错误代码。

错误代码 403(禁止访问)是指用户请求有效但服务器拒绝提供服务的情况。这可能是因为缺乏访问所请求资源的权限。有几种情况可能会导致此问题:
-
文件权限:如果服务器没有足够的权限访问请求的文件,可能会导致 403 错误。可能的修复方法包括验证服务器是否正在尝试访问 Web 服务器的索引文件,由 www-data 用户拥有的工作进程,并且索引文件位于正确的位置(对于 Nginx,它是 /usr/share/nginx/html/index.html).
-
.htaccess:Web 服务器使用 .htaccess 文件来实现各种安全功能,例如过滤特定的 IP 地址或范围。可能的修复方法包括验证 HTTP 请求来源的 IP 地址是否未被阻止。
-
文件不存在:如果请求尝试访问没有默认索引文件且未启用目录列表的位置,服务器将返回 403 错误。在这种情况下,可能的修复方法包括调整服务器配置以允许目录列表。

错误代码 404 (Not Found) 表示用户能够成功连接到 Web 服务器,但无法找到请求的资源。此错误可能会在多种情况下出现。以下是一些可能的排错操作:
-
检查将用户引导至服务器资源的链接中是否存在任何潜在的拼写错误。
-
用户可能输入了错误的 URL。检查是否是这种情况,并在必要时进行纠正。
-
验证服务器上是否存在该文件。它是否已被移动或从服务器中删除?
-
服务器可能配置了错误的文档根目录位置。检查该问题,并在适当的时候进行修复。
-
用户拥有的 Web 服务器工作进程是否有权访问请求的文件?请注意,访问目录需要同时具有读取和执行权限。
-
该资源是符号链接吗?如果是,则必须将服务器配置为允许跟踪符号链接。
-
常见服务器错误

错误代码 500 (Internal Server Error) 当服务器由于未知原因无法处理请求时发生。在某些情况下,当更具体的 5xx 错误代码更合适时,服务器也会报告 500 错误。
500 错误最常见的原因之一是服务器配置错误,例如格式错误的 .htaccess 文件。如果缺少软件包,也可能会引发此错误,例如在系统上未安装 PHP 的情况下尝试运行 PHP 代码。

错误代码 502 (Bad Gateway) 表示服务器是代理或网关,并且无法从后端服务器(负责实际履行请求)获取有效的响应。如果服务器是反向代理(例如负载均衡器),则需要检查以下几项内容:
-
后端服务器运行状况良好。
-
反向代理配置正确(具有正确的后端规范)。
-
反向代理与后端服务器之间的连接正常。如果服务器可以使用不同的端口进行通信,则防火墙必须允许连接到这些端口。
-
如果 Web 应用程序配置为使用套接字,请确保该套接字存在于正确的位置并具有适当的权限。

错误代码 503 (Service Unavailable) 说明服务器正处于超载状态或目前正在进行维护。这意味着服务器应该会在某个时间点恢复可用。
如果服务器未在进行维护,则表明服务器没有必要的硬件资源(处理能力、内存等)来处理传入的请求。在这种情况下,应配置服务器以允许更多用户或分配更多资源。
错误代码 504 (Gateway Timeout) 表示服务器是代理或网关服务器,并且在允许的时间窗口内未收到来自后端的响应。有几种情况可能会导致此问题:
-
服务器之间的网络连接不良。
-
后端服务器运行速度太慢(由于性能问题)。
-
网关/代理服务器的超时限制太紧。
结语
本指南讨论了 HTTP 错误代码,特别是一些最常见的错误代码。它描述了这些代码的含义,并为潜在的故障排除操作提供了建议。有了这些知识,您现在就有了解决 Web 服务器或应用程序问题的重要基础。
这只是最常用的 HTTP 状态码的简短列表。要获取所有 HTTP 状态码的完整列表,请查看 Wikipedia 上的 HTTP 状态码。您还可以查看我们关于 Nginx HTTP 代理、负载均衡、缓冲和缓存:概述.
祝您使用愉快!
评论
暂无评论。发表第一条评论吧。