Configuration nginx:有没有可能有一个';一网打尽';错误页面?

Configuration nginx:有没有可能有一个';一网打尽';错误页面?,configuration,nginx,webserver,Configuration,Nginx,Webserver,当查看nginx指令的文档时,似乎必须手动列出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; error_page 404

当查看nginx指令的文档时,似乎必须手动列出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;
error_page   404          /404.html;
error_page   5xx          /50x.html;

是否存在为所有未直接指定的状态代码生成通配符的方法。。。例如:

error_page   404          /404.html;
error_page   502 503 504  /50x.html;
error_page   403          http://example.com/forbidden.html;
error_page   404          = @fetch;
error_page   404          /404.html;
error_page   5xx          /50x.html;

这是不可能的

此外,不建议盲目列出所有代码,因为

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

如果希望所有错误都有一个错误页面,可以通过服务器端包含来实现。我写了一篇关于这一点的博文:@adriaan这是否像所有错误都只有一页一样有效?你的博客上还说在每个(http,server)指令中声明这一点?我不认为OP想要重新定义任何错误代码,他们只是想要一个html模板。另外,3xx响应代码不是错误代码-我相信问题只在4xx和5xx左右codes@Bill,OP非常明确,并要求“为所有未直接指定的状态代码提供通配符”。即使目标是只重新定义4xx/5xx错误代码,而不是nginx允许重新定义的所有状态代码,正如答案所解释的,这仍然是个坏主意。