location
Вначале проверяются location'ы, заданные префиксными строками (префиксные location'ы). Среди них ищется максимальное совпадение. Затем проверяются регулярные выражения, в порядке их следования в конфигурационном файле. Проверка регулярных выражений прекращается после первого же совпадения, и используется соответствующая конфигурация. Если совпадение с регулярным выражением не найдено, то используется конфигурация максимально совпавшего префиксного location'а.
Группа 1 (допускаются вложенные locations)
О Повторяющихся локейшинах nginx сообщит в логах.
Полное совпадение
- location = /dir/
Максимально возможное совпадение (после удачного совпадение не искать)
- location ^~ /dir/
Пути
- root /var/www - файлы будут искаться в /var/www/dir
- alias /var/www - файлы будут искаться в /var/www
Вложенные локации
location /i/ { location ~* ^/i/(.)(.+\.gif)$ { alias /images/$1$1$2; } return 404; }
Группа 2
Регулярные выражения (в порядке выполнения)
- location ~ \.php$
- location ~* \.php$ # (без учета регистра)
Пути
- root /([a-z])
- alias - /$1.img
Группа 3
Именованные
Используется в rewrite
- location @php
Подробно
- = Точное соотвествие (Не имеет вложений)
- ~ Регулярные выражения (с учётом регистра)
- ~* Регулярные выражения (без учета регистра)
- ^~ (Не имеет вложений)
- @имя - именованный location (только для перенаправления в него запросов) (Не имеет вложений)
- uri (совпадение с uri)
Примеры:
- location = / {…}
- location / {…}
- location ^~ /images/ {…}
- location ~* \.(gif|jpg|jpeg)$ {…}
- location @rewrite {…}
Типичные ошибки
Если есть возможно, лучше не использовать
- if - !!!при положительных ответах, будет отработан только последний
- break
- rewrite