在我的Nginx服务器上有几个具有不同主机名的站点。我想提供漂亮的http错误,其中包含对其他文件的引用(在我的例子中是一个图像)。
这是使404错误适用于特定主机名的配置:
server {
listen 80;
server_name example.com;
...
location /http-error {
alias /usr/share/nginx/http-error;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/http-error;
}
}这允许指定/usr/share/nginx/http-error目录中美观的404错误所需的所有文件。
但目前,我必须对每个服务器名重复这些行。是否有一种更有效的方法来指定一个全局location指令,该指令对每个主机名都有效,除非它在主机名的服务器块中被覆盖/禁用?
发布于 2020-04-26 05:03:45
Nginx没有全局别名,因为location指令只在server上下文中可用(还有另一个location,但最终也在server{}块中)。不过,error_page可以直接位于http{}上下文中。对于全局别名(或重复别名),可以使用include:
http {
error_page 404 /404.html;
server {
listen 80;
server_name example.com;
include /etc/nginx/global-aliases.conf;
}
server {
listen 80;
server_name example.org;
include /etc/nginx/global-aliases.conf;
}
}/etc/nginx/global-aliases.conf:
location = /404.html {
root /usr/share/nginx/http-error;
}https://serverfault.com/questions/1014165
复制相似问题