NGINX‘全局’位置

NGINX‘全局’位置

是否可以为 NGINX 服务器创建“全局”位置?我希望每个由 NGINX 提供服务的站点都能访问 /global/ 文件夹;如下所示

http {
    [...stuff...]

    #Global path
    location /global/ {
        root /my/global/location/;
    }

    server {
        listen          127.0.0.1:80;
        server_name     example.com;

        [...standard config...]
    }

    server {
        listen          127.0.0.1:80;
        server_name     example.org;

        [...standard config...]
    }

    server {
        listen          127.0.0.1:80;
        server_name     example.net;

        [...standard config...]
    }
}

并能够从以下位置访问全局位置的文件http://example.com/global/ http://example.org/global/ETC。

如果我将全局位置块添加到每个server块,我就可以做到这一点,但这很烦人,我希望全局定义它并能够从站点内部访问它。

我可以include在每个主机中使用指令,但它仍然需要在每个主机中进行指定。NGINX wiki 说“location”块仅在上下文中有效,server但我不知道是否有重写技巧或类似的东西。

答案1

这不是否定的,而且据我所知,也没有任何关于改变这一情况的讨论。

答案2

直接包含它怎么样?例如

include /etc/nginx/global-location.conf;

我知道您需要将其添加到每个虚拟主机,但它允许轻松进行进一步的更改,并且我认为它比动态虚拟主机更快。

答案3

您也可以反过来做,通过使用动态 vhost 目录。
例如:

server {
...
    server_name ~^(www\.)?(?<domain>.+)$;
...
    location /global/ {
        root /my/global/location/;
    }
...

相关内容