如何排除常见的 HTTP 错误代码

介绍

当您访问 Web 服务器或应用程序时,每个由服务器接收的 HTTP 请求都会用 HTTP 状态代码响应。

  • 1xx:信息
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务器错误

本指南专注于从系统管理员的角度识别和解决最常见的HTTP 错误代码,即4xx和5xx状态代码。

客户端和服务器错误概述

客户端错误,或HTTP状态代码从400到499是由用户客户端(即网页浏览器或其他HTTP客户端)发送的HTTP请求的结果。

服务器错误,或HTTP状态代码从500到599,当Web服务器知道错误发生或无法处理请求时返回。

总体问题解决技巧

  • 使用网页浏览器来测试网页服务器时,在进行服务器更改后,请刷新浏览器
  • 检查服务器日志以获取有关服务器如何处理请求的更多细节。例如,Apache 或 Nginx 等网页服务器会生成两个名为access.logerror.log的文件,可以扫描相关信息
  • 请记住,HTTP状态代码定义是服务请求的应用程序实施的标准的一部分。

现在你对 HTTP 状态代码有很高的了解,我们将看看常见的错误。

第400章 错误的要求

400 状态代码或 Bad Request 错误意味着发送到服务器的 HTTP 请求具有无效的语法。

以下是可能发生 400 Bad Request 错误的几个例子:

清除浏览器的缓存和cookie可能会解决这个问题

  • 由于错误的浏览器
  • 由于人为错误而错误的请求,当手动形成HTTP请求(例如使用‘curl’错误)

第401章 未经批准

401 状态代码或 Unauthorized 错误意味着试图访问资源的用户未被验证或未被正确验证,这意味着用户必须提供凭证才能查看受保护的资源。

一个 401 未经授权的错误返回的例子是,如果用户试图访问受 HTTP 身份验证保护的资源,如在 本 Nginx 教程中。

第403章 被禁止

403 状态代码,或 Forbidden 错误,意味着用户提出了有效的请求,但服务器拒绝服务,因为缺乏访问所请求的资源的权限。

档案许可

403 错误通常发生在运行 Web 服务器流程的用户没有足够的权限来读取正在访问的文件时。

若要举一个 403 错误的例子,假设以下情况:

  • 用户正在尝试访问网页服务器的索引文件,从http://example.com/index.html`
  • 网页服务器工人流程由网页服务器的用户拥有
  • 在服务器上,文件索引位于 /usr/share/nginx/html/index.html

如果用户收到 403 Forbidden 错误,请确保www-data用户有足够的读取权限,这通常意味着该文件的 other permissions 应该设置为 read

1sudo chmod o=r /usr/share/nginx/html/index.html

黑客

403 错误的另一个潜在原因,通常是故意的,是使用.htaccess 文件..htaccess 文件可以用来拒绝某些资源访问特定 IP 地址或范围,例如。

如果用户意外收到 403 禁止错误,请确保它不是由您的 .htaccess 设置引起的。

索引文件不存在

如果用户试图访问没有默认索引文件的目录,并且目录列表未启用,网页服务器将返回一个 403 禁止错误,例如,如果用户试图访问 http://example.com/emptydir/,并且在服务器上的 emptydir目录中没有索引文件,则会返回一个 403 状态。

如果您希望启用目录列表,则可以在 Web 服务器配置中这样做。

第404章 找不到

404状态代码或 Not Found 错误意味着用户可以与服务器进行通信,但无法找到所请求的文件或资源。

404 错误可能发生在各种情况下,如果用户意外收到 404 未找到错误,以下是解决问题时要问的几个问题:

  • 引导用户到您的服务器资源的链接是否有打字错误?
  • 用户输入错误的 URL?
  • 该文件是否存在于服务器上的正确位置? 该资源是否在服务器上被移动或删除?
  • 服务器配置是否有正确的文档根位置?
  • 是否拥有Web服务器工人流程的用户有权通过所请求的文件所在的目录? (提示:目录需要阅读和执行访问权限)
  • 访问的资源是否具有象征链接?如果是,请确保Web服务器配置遵循象征链接

500 内部服务器错误

500 状态代码,或 Internal Server Error,意味着服务器无法处理请求,原因不明。

此错误的最常见原因是服务器错误配置(例如,错误的.htaccess 文件)或缺少的包(例如,试图运行 PHP 文件而没有正确安装 PHP)。

《502 Bad Gateway》

502状态代码,或 Bad Gateway 错误,意味着服务器是一个网关或代理服务器,它没有收到实际满足请求的后端服务器的有效响应。

如果该服务器是反向代理服务器,例如负载平衡器,这里有几个要检查的事情:

  • 后端服务器(向其转发 HTTP 请求)是健康的
  • 反向代理配置正确,指定了正确的后端
  • 后端服务器和反向代理服务器之间的网络连接是健康的. 如果服务器可以在其他端口进行通信,请确保防火墙允许它们之间的流量
  • 如果您的 Web 应用程序配置为在插槽上收听,请确保插槽存在于正确的位置,并且具有正确的权限

第503章 没有服务

503状态代码,或 Service Unavailable 错误,意味着服务器过载或正在维护中。

如果服务器没有进行维护,这可能表明服务器没有足够的 CPU 或内存资源来处理所有传入请求,或者需要配置 Web 服务器以允许更多用户、线程或流程。

504 网关时间

504状态代码或 Gateway Timeout 错误意味着服务器是网关或代理服务器,并且在允许的时间内没有收到后端服务器的响应。

这种情况通常发生在以下情况下:

  • 服务器之间的网络连接不好
  • 满足请求的后端服务器太慢,由于性能差
  • 网关或代理服务器的停机时间太短

结论

现在你已经熟悉了最常见的 HTTP 错误代码,以及这些错误代码的常见解决方案,你应该有一个很好的基础来解决你的 Web 服务器或应用程序的问题。

如果您遇到没有在本指南中提及的任何错误代码,或者您知道其他可能的解决方案,而那些被描述的,请在评论中讨论它们。

Published At
Categories with 技术
comments powered by Disqus