5xx 错误:如何解决服务器问题
HTTP 5xx 代码可能是源服务器或 CDN 边缘服务器出错造成的。
检查事故或维护
如果您发现 5xx 代码大幅增加或收到用户的多次投诉,我们建议您查看我们的状态页面,了解与以下服务相关的事件或维护情况:
- CDN 服务;
- 其他 Gcore 服务(如果您使用其中一项服务作为原点:存储、VPS、专用服务器、云)。
什么是 5xx 错误?
出现 5xx 错误可能有多种原因。在下面的文章中,我们将介绍出现此类错误的最可能原因,以及如何自我诊断和修复。在大多数情况下,5xx 错误由两种错误组成:状态代码 502(表示服务器在作为网关或代理时,从上游服务器收到了无效响应)和状态代码 504(表示服务器在作为网关或代理时,没有及时从上游服务器收到完成请求所需的响应)。除了 502 和 504 之外,还有其他 5xx 状态代码,但这些代码是您最有可能遇到的,也是可以自行修复的。如果收到其他错误,请联系我们的支持团队。
检查您的源服务器
确保您的源服务器可用。
如果源服务器没有响应,或返回 HTTP 错误,请联系主机提供商或服务器管理员解决此问题。
- HTTP 504 错误通常会在源服务器未及时响应时出现:CDN 边缘服务器会等待 5 秒钟,如果源服务器未响应,就会返回 504 错误。请更改源服务器的设置,以便及时响应,或确保没有进程拖慢连接速度。
- 如果使用的是 Cloudflare 或 Cloudfront 起源服务器,请确保已启用 "更改 SNI 主机名 "选项。
- 如果您通过 IP 或使用 DDoS 防护服务来限制对源代码的访问,请确保您已将 CDN 边缘服务器列入白名单。使用下面的 API 请求接收 IP 列表:
curl -i -X GET https://api.gcore.com/cdn/public-ip-list
注:我们会不断更新此列表,并建议您采用两种解决方案:创建一个脚本以定期更新来源白名单,或使用 HTTP 标头授权。有关 ACL 的更多信息,请参阅文章。
检查 CDN 资源设置
HTTP 5xx 错误可能是 CDN 资源设置不正确造成的。请查看下面最常见的错误列表。
不正确的原点拉取协议
检查资源设置中的原点拉取协议,并确保您的原点服务器使用相同的协议。有关此功能的更多信息,请参阅文章。
如何检查您的源支持何种协议?可以直接在服务器上检查,也可以执行 "Curl "命令,大多数系统默认支持 "Curl "命令。
要检查使用的 origin 拉取协议是否正确,请在终端(Windows)或控制台(macOS)中运行以下命令:
curl -H "Host: example.com" -I http(s)://10.0.0.1/file.txt
说明:
- example.com 是主机标头的值;
- http(s) 是协议值,取决于源使用的协议;
- 10.0.0.1 是网站源的 IP 地址;
- file.txt 是通过 CDN 传输的任何静态文件。
请注意,语法可能因操作系统而异。
如果请求返回状态代码 200,则表示您的源支持您在命令中说明的协议。如果返回 5xx 状态代码或 SSL 错误,则表示你的源不支持所选协议。请使用其他协议确保其他协议可以访问,并在 CDN 资源设置中相应更改您的起源拉动协议。
主机标头不正确
选中 "更改主机标题 "选项。确保该选项处于激活状态,且其值与 "起源来源 "相同,或与您在 "起源 "上设置的主机相匹配。有关主机标头的更多信息,请参阅此处。
如何检查主机标头?
要检查所用主机标头是否正确,请在终端(Windows)或控制台(macOS)中运行以下命令:
curl -H "Host: example.com" -I http(s)://10.0.0.1/file.txt
说明:
- example.com 是主机标头的值;
- http(s) 是协议值,取决于源使用的协议;
- 10.0.0.1 是网站源的 IP 地址;
- file.txt 是通过 CDN 传输的任何静态文件。
如果在响应中收到 400 Bad Request、403 Forbidden Response、502 Bad gateway 或 504 Gateway timeout 错误,说明服务器无法处理指定的主机标头。在这种情况下,请按照上述说明管理该选项。
要跟踪 5xx 错误的数量,请使用 "报告 "选项卡上的 "响应代码 "统计。
要接收有关错误响应的详细数据,请使用我们的付费功能 Raw Logs。查看文章了解有关 Raw Logs 接收设置和日志字段规格的更多信息。
评论
0 条评论
请登录写评论。