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

Путь соответствия Nginx на любом доменном имени

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

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

Nginx выбирает server блок для обработки запроса на основе значений listen и server_name директивы. Лучший способ вставить общий код в ряд server блоков (или где-либо еще в конфигурации Nginx) - поместить их в отдельный файл и использовать include директива. Видеть этот документ для подробностей.

Например:

В файле с именем wellknown.conf:

location ^~ /.well-known/ {
    root /path/to/root;
}

В каждом server блок:

server {
    ...
    include wellknown.conf;
    ...
}

Без пути к каталогу файл будет расположен в том же каталоге, что и nginx.conf файл. Очевидно, эти файлы можно разместить в другом месте файловой системы, но избегайте таких каталогов, как sites-enabled, sites-available и conf.d поскольку у них уже есть конкретная цель.

В ^~ модификатор на location директива делает его недвусмысленным и избегает регулярных выражений location имеет приоритет. Видеть этот документ для подробностей.