location
Директива `location` определяет, как NGINX должен обрабатывать запросы на основе URI. — NGINX HTTP Core
Описание
Директива `location` в NGINX используется для определения особой обработки конкретных запрошенных URI или шаблонов URI. Она позволяет применять разные конфигурации в зависимости от части URL, которая следует за именем сервера. Директива может располагаться внутри блока `server` или быть вложена в другой блок `location` для создания более специализированного поведения. При определении `location` можно указывать точные совпадения, префиксы или регулярные выражения. Например, `location /images/` соответствует любому запросу, начинающемуся с `/images/`, в то время как `location = /` соответствует только запросам, направленным к корневому пути. Это означает, что запросы к `/images/logo.png` будут обрабатываться `location /images/`, но не `location = /`. Для более сложных требований к сопоставлению также можно использовать регулярные выражения с модификаторами `~` и `~*`, которые обозначают, соответственно, регистрозависимое и регистронезависимое совпадение. Кроме того, внутри блока `location` можно указывать директивы такие как `proxy_pass`, `rewrite` или любые другие директивы NGINX, относящиеся к обработке HTTP. Такая гибкость обеспечивает детальный контроль над тем, как обрабатываются различные запросы, повышая способность сервера NGINX эффективно и адекватно обслуживать разные типы запросов в зависимости от их URI.
Пример конфига
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
location /images/ {
root /var/www/images;
}
}Использование неправильно вложенных блоков `location` может привести к непредвиденному поведению.
Неприменение правильного модификатора сопоставления может привести к тому, что нужный блок не будет выбран.
Перекрывающиеся locations без корректной специфичности могут вызвать путаницу при обработке запросов.