首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定在Nginx中跨多个主机名工作的位置(S)

指定在Nginx中跨多个主机名工作的位置(S)
EN

Server Fault用户
提问于 2020-04-25 21:04:45
回答 1查看 143关注 0票数 1

在我的Nginx服务器上有几个具有不同主机名的站点。我想提供漂亮的http错误,其中包含对其他文件的引用(在我的例子中是一个图像)。

这是使404错误适用于特定主机名的配置:

代码语言:javascript
复制
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指令,该指令对每个主机名都有效,除非它在主机名的服务器块中被覆盖/禁用?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-04-26 05:03:45

Nginx没有全局别名,因为location指令只在server上下文中可用(还有另一个location,但最终也在server{}块中)。不过,error_page可以直接位于http{}上下文中。对于全局别名(或重复别名),可以使用include

代码语言:javascript
复制
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

代码语言:javascript
复制
location = /404.html {
    root   /usr/share/nginx/http-error;
}
票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1014165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档