Skip to content

Instantly share code, notes, and snippets.

@monochromer
Last active November 9, 2022 09:30
Show Gist options
  • Save monochromer/ab0160ef4be2a7865920763df55e34bd to your computer and use it in GitHub Desktop.
Save monochromer/ab0160ef4be2a7865920763df55e34bd to your computer and use it in GitHub Desktop.
nginx location

Порядок обработки директив location

1. Точное совпадение

Не может иметь вложенные location’ы

location = / {}

2. Префиксные пути

Выбирается самый длинный и запоминается.

location /company/ {}
location /company/projects/ {}
location /company/projects/tasks/ {}

Если у совпавшего префиксного location’а максимальной длины указан модификатор ^~, то регулярные выражения не проверяются.

Если location задан префиксной строкой со слэшом в конце и запросы обрабатываются при помощи proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass или grpc_pass, происходит специальная обработка. В ответ на запрос с URI равным этой строке, но без завершающего слэша, будет возвращено постоянное перенаправление с кодом 301 на URI с добавленным в конец слэшом. Если такое поведение нежелательно, можно задать точное совпадение URI и location, например:

location /user/ {
    proxy_pass http://user.example.com;
}

location = /user {
    proxy_pass http://login.example.com;
}

3. Пути с регулярными выражениями

Проверяются регулярные выражения, в порядке их следования в конфигурационном файле. Проверка регулярных выражений прекращается после первого же совпадения, и используется соответствующая конфигурация. Если совпадение с регулярным выражением не найдено, то используется конфигурация запомненного ранее префиксного location’а.

  • ~ - с учётом регистра символов
  • ~* - без учёта регистра символов

Если совпадение с регулярным выражением не найдено, то используется конфигурация запомненного ранее префиксного location’а.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment