# Обработка регулярок в nginx

Источник: https://blog.xsk.in/it/obrabotka-regulyarok-v-nginx/597/
Опубликовано: 2014-05-19 · Рубрики: IT, Linux, nginx


Дабы не возвращаться к вниканию в официальную документацию, закреплю основные моменты конфигурирования nginx.
Синтаксис директивы location:

```
location [ = | ~ | ~* | ^~ ] uri { ... }
```

Порядок проверки директив location:

1. **=** точное совпадение ссылки, поиск прекращается
2. **^~** строки без регулярных выражений, поиск прекращается
3. поиск подходящей регулярки, сначала на максимальное совпадение, затем по порядку в файле конфигурации (если 2 одинаковых, работает с верхним)

   - **~** совпадение с учетом регистра
   - **~\*** совпадение без учета регистра
4. если подходит под регулярку - п3, иначе п2

Пример:

```
location = / {
# попадет только / запрос в корень.
[ конфигурация A ]
}
location / {
# попадут любые запросы, но сначала проверятся ниже
[ конфигурация B ]
}
location /documents/ {
# попадут все запросы, начинающиеся на /documents/,
# продолжится проверка на регулярки. Обработается, только
# если не будет подходящих регулярок
[ конфигурация C ]
}
location ^~ /images/ {
# попадут все запросы с началом на /images/,
# поиск прекратится
[ конфигурация D ]
}
location ~* \.(gif|jpg|jpeg)$ {
# попадут все запросы с окончанием на gif, jpg, jpeg. Но, запросы
# с началом на /images/ сюда уже не попадут
[ конфигурация E ]
}
```

Примеры запросов:

<table>
<tbody>
<tr>
<td>/</td>
<td>конфигурация A</td>
</tr>
<tr>
<td>/index.html</td>
<td>конфигурация B</td>
</tr>
<tr>
<td>/documents/document.html</td>
<td>конфигурация C</td>
</tr>
<tr>
<td>/images/1.gif</td>
<td>конфигурация D</td>
</tr>
<tr>
<td>/documents/1.jpg</td>
<td>конфигурация E</td>
</tr>
</tbody>
</table>

***Ссылки:***

- [Документация (рус)](http://nginx.org/ru/docs/http/ngx_http_core_module.html#location "Модуль ngx_http_core_module")
- [Документация (англ)](http://wiki.nginx.org/NginxHttpCoreModule#location "HttpCoreModule")

