Можно ли создать «глобальное» местоположение для сервера 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/ и т.п.
Я могу сделать это, если добавлю блок глобального местоположения к каждому server
block, но это раздражает, я бы хотел, чтобы он был определен глобально и мог получить к нему доступ изнутри сайтов.
Я мог бы использовать include
директива на каждом хосте, но по-прежнему требует спецификации на каждом хосте. В вики NGINX говорится, что блок 'location' действителен только в пределах server
контекст, но я не знал, есть ли уловка перезаписи или что-то подобное.
Это не так, и, насколько я знаю, об изменении этого тоже не идет речи.
Вы можете сделать это наоборот, используя динамические каталоги vhost.
например:
server {
...
server_name ~^(www\.)?(?<domain>.+)$;
...
location /global/ {
root /my/global/location/;
}
...
А как насчет того, чтобы просто включить его? например
include /etc/nginx/global-location.conf;
Я знаю, что вам нужно добавить его в каждый из хостов, но он позволяет легко вносить дальнейшие изменения, и я думаю, что это быстрее, чем использование динамических хостов.