Назад | Перейти на главную страницу

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/ и т.п.

Я могу сделать это, если добавлю блок глобального местоположения к каждому server block, но это раздражает, я бы хотел, чтобы он был определен глобально и мог получить к нему доступ изнутри сайтов.

Я мог бы использовать include директива на каждом хосте, но по-прежнему требует спецификации на каждом хосте. В вики NGINX говорится, что блок 'location' действителен только в пределах server контекст, но я не знал, есть ли уловка перезаписи или что-то подобное.

Это не так, и, насколько я знаю, об изменении этого тоже не идет речи.

Вы можете сделать это наоборот, используя динамические каталоги vhost.
например:

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

А как насчет того, чтобы просто включить его? например

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

Я знаю, что вам нужно добавить его в каждый из хостов, но он позволяет легко вносить дальнейшие изменения, и я думаю, что это быстрее, чем использование динамических хостов.