在智能错误已禁用的情况下,如何禁用 cloudflare 自定义错误页面,包括错误 504(网关超时)?

5 custom-error-pages cloudflare

我有一个网站使用 cloudflare.com 的免费计划作为反向代理。

\n\n

我有一个脚本执行时间超过 60 秒,服务器抛出 504 网关超时,但我没有获得我的 Web 服务器页面,而是获得了 cloudflare 设置的自定义页面,

\n\n

我已经仔细检查过,并且我在 cloudflare 中的智能错误应用程序已关闭,那么为什么 cloudflare 仍然提供他们的定制页面?

\n\n

我如何关闭 cloudflare 的所有自定义页面并仅用作反向代理。?

\n\n

所以我的问题是如何关闭 cloudflare 中的所有自定义错误页面?

\n\n

我在 Cent os 7. 64 位上使用 nginx 最新服务器。\n使用最新的 php-fpm。

\n\n
\n\n

更新 :

\n\n

这就是我遇到 504 错误时得到的结果。

\n\n
Error 504 Ray ID: 1fb6a3feef7c17c8 \xe2\x80\xa2 2015-06-24 07:16:17 UTC\nGateway time-out\nYou\nBrowser\nWorking\nSingapore\nCloudFlare\nWorking\nmydomain.com\nHost\nError\nWhat happened?\n\nThe web server reported a gateway time-out error.\nWhat can I do?\n\nPlease try again in a few minutes.\n\nCloudFlare Ray ID: 1fb6a3feef7c17c8 \xe2\x80\xa2 Your IP: myip \xe2\x80\xa2 Performance & security by CloudFlare\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

更新:根据damoncloudflare的建议,我想添加更多详细信息。,

\n\n

它是一个专用服务器,带有 linux cent os 7, 64 位,最新的 nginx , php-fpm,

\n\n

在 nginxconf 中我已经指定了如何处理 504 错误

\n\n
error_page  500 502 503 504             /50x.html;\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何复制它。

\n\n

代码

\n\n
<?php\nhttp_response_code(504);\n?>\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
<?php\nsleep(61);\necho 'i am done sleeping';\n?>\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 其中 61 大于 max_execution_time(即 60)
  • \n
\n\n

更多细节,以及最初为什么会发生这种情况。

\n\n

我正在下载巨大的文件,下载时间超过 60 秒,这是 php.ini 文件中设置的 max_execution_time 。

\n\n

所以我收到了 cloudflare 错误。\ni 想补充一点,我的服务器没有任何问题。

\n\n

我还有一个疑问,如果我从免费版升级到专业版,我是否能够禁用 cloudlfare 504 错误并显示我的网络服务器自定义页面?

\n\n
\n\n

更新2

\n\n

我想,现在我明白了这个问题。,

\n\n

错误 504\n网关超时

\n\n

当服务器无法访问时触发,这就是 cloudflare 显示其页面的地方,\n显然,如果服务器无法访问,则服务器不可能显示 504 页面。

\n\n

感谢您的回复。

\n

Der*_*ers 7

您需要高级 Cloudflare 计划来自定义某些响应代码的错误页面。从 Cloudflare 仪表板(域名 > 自定义页面选项卡):

\n
\n

500 类错误 [...] 升级到 Pro [...] 发布自定义页面后,Cloudflare 将使用您的自定义页面,而不是向访问者提供有关 502、504 和 52x 错误的标准 500 类错误页面。

\n
\n

即使 NGINX 将您的错误页面发送到 Cloudflare,Cloudflare 也会看到5xx响应代码与您的错误页面一起发送回来,并会使用他们的错误页面而不是您的错误页面进行响应。

\n

有一个解决方法。来自关于 error_page 指令的 NGINX 文档

\n
\n

此外,可以使用 \xe2\x80\x9c=response\xe2\x80\x9d 语法将响应代码更改为另一个,例如:\nerror_page 404 =200 /empty.gif;

\n
\n

在 NGINX 中,在响应 Cloudflare 之前,我们将“违规”5xx错误映射到不同的响应代码。也就是说,我们不会将有问题的5xx响应代码与错误页面一起发送,而是将响应代码更改为 Cloudflare 不会覆盖我们的页面的响应代码。5xx将有问题的错误映射到另一个5xx类错误 ( )是个好主意500。尽管传达的信息较少,但这保留了类错误的一般含义5xx

\n
error_page  500 503  /50x.html;\nerror_page  502 504  =500  /50x.html;\nlocation = /50x.html {\n    root /usr/share/nginx/html;\n    internal;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我应该添加 - 如果您收到错误页面504,则表示已到达 NGINX。这个错误意味着,在反向代理上下文中,NGINX 成功传递了请求,但上游服务(Web 服务器)响应时间过长。

\n

  • 终于有人理解了,我认为这是因为我的服务器配置。假设 php 配置设置为最大执行时间为 3 分钟,cloudflare 会在显示其自定义错误页面之前等待 3 分钟吗?我不这么认为。 (2认同)

dam*_*are -1

504 或 502 网关错误实际上表明您的后端服务器存在问题,我建议联系您的托管提供商/检查您的服务器日志。

“所以我的问题是如何关闭 cloudflare 中的所有自定义错误页面?” 使用付费计划(专业版或更高版本)的客户可以自定义错误页面。

“我已经仔细检查过,并且我在 cloudflare 中的智能错误应用程序已关闭,那么为什么 cloudflare 仍然提供他们的定制页面?” SmartErrors 是一个完全不同的功能。它被设计为仅当我们在您网站上的 URL 上收到 404 错误时触发。