我针对列出的大多数错误创建了一些自定义的 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/