是否可以为 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/;
}
...