Я хочу настроить 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
имеет приоритет. Видеть этот документ для подробностей.