nginx:是否可以有一个“捕获所有”error_page?

isN*_*247 5 configuration webserver nginx

当查看 nginx 的error_page指令的文档时,似乎必须手动列出 nginx(或上游服务器)可能返回的每个可能的状态代码。

例如:

error_page   404          /404.html;
error_page   502 503 504  /50x.html;
error_page   403          http://example.com/forbidden.html;
error_page   404          = @fetch;
Run Code Online (Sandbox Code Playgroud)

无论如何,是否可以为所有未直接指定的状态代码生成通配符...例如:

error_page   404          /404.html;
error_page   5xx          /50x.html;
Run Code Online (Sandbox Code Playgroud)

或者

error_page   404          /404.html;
error_page   502 503 504  /50x.html;
error_page   @catchall    /5xx.html;
Run Code Online (Sandbox Code Playgroud)

Max*_*nin 2

这不可能。

而且,不建议盲目列出所有代码,因为

  • nginx 允许重新定义所有响应代码,包括您实际上不想重新定义的响应代码,除非在一些非常特定的情况下(例如,您通常不想重新定义 304(未修改),并且可能不想重新定义 302(已找到),除非有是非常具体的原因);
  • 重新定义某些错误代码可能弊大于利(例如,重新定义 400(错误请求)是一个坏主意)。

  • 我认为 OP 不想重新定义任何错误代码,他们只是想要一个 html 模板。另外,3xx 响应代码不是错误代码 - 我相信问题仅围绕 4xx 和 5xx 代码 (3认同)