高效定义多个 nginx 自定义错误页面

高效定义多个 nginx 自定义错误页面

我针对列出的大多数错误创建了一些自定义的 4xx 和 5xx HTML 错误页面维基百科页面。我想将它们安装在我设置的任何 nginx 服务器上,而不会对性能造成太大影响。

按照文档,我针对错误提出了以下配置指令:

error_page 404 /nginx/404.html;
location = /nginx/404.html {
        alias /usr/share/nginx/errors/404.html;
        internal;
}

我把它放进去/etc/nginx/snippets/errors.conf并且可以将片段包含到我所有的server块中。

然而,这很有效......

它会在盒子上的location每个块中添加近 50 条指令。server

这是否过度?有没有更有利于性能的方法来实现同样的效果?我避免使用服务器端包含、if 语句和重写,认为这会需要更多的服务器资源。

答案1

当您不将每个错误页面映射到其自己的位置时,您可以使用单个位置指令:

error_page 402 /error/402.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html; 
... etc. 

location = /error/ {
        alias /usr/share/nginx/errors/;
}

答案2

为什么不尝试ssi on;在错误位置使用服务器端包含 ( )?然后,您可以为所有错误代码定义一个错误页面。它是动态的,无需使用真正的编程语言。下面是一个很好的模板示例,说明了您可以使用该技术完成的大部分工作:https://www.cambus.net/nginx-and-server-side-includes/

相关内容