Дабы не возвращаться к вниканию в официальную документацию, закреплю основные моменты конфигурирования nginx.
Синтаксис директивы location:
location [ = | ~ | ~* | ^~ ] uri { ... }
Порядок проверки директив location:
- = точное совпадение ссылки, поиск прекращается
- ^~ строки без регулярных выражений, поиск прекращается
- поиск подходящей регулярки, сначала на максимальное совпадение, затем по порядку в файле конфигурации (если 2 одинаковых, работает с верхним)
- ~ совпадение с учетом регистра
- ~* совпадение без учета регистра
- если подходит под регулярку — п3, иначе п2
Пример:
location = / {
# попадет только / запрос в корень.
[ конфигурация A ]
}
location / {
# попадут любые запросы, но сначала проверятся ниже
[ конфигурация B ]
}
location /documents/ {
# попадут все запросы, начинающиеся на /documents/,
# продолжится проверка на регулярки. Обработается, только
# если не будет подходящих регулярок
[ конфигурация C ]
}
location ^~ /images/ {
# попадут все запросы с началом на /images/,
# поиск прекратится
[ конфигурация D ]
}
location ~* \.(gif|jpg|jpeg)$ {
# попадут все запросы с окончанием на gif, jpg, jpeg. Но, запросы
# с началом на /images/ сюда уже не попадут
[ конфигурация E ]
}
Примеры запросов:
| / | конфигурация A |
| /index.html | конфигурация B |
| /documents/document.html | конфигурация C |
| /images/1.gif | конфигурация D |
| /documents/1.jpg | конфигурация E |
Ссылки: