Примеры директивы location в Nginx

Полезным инструментом для управления обработкой нескольких типов запросов является директива location
в Nginx. Указание правил в директиве location
позволяет применять определённые настройки, перенаправлять запросы в разные области вашего приложения или полностью отклонять некоторые запросы. С помощью директивы location
в Nginx вы можете эффективно управлять запросами, что важно для повышения производительности, безопасности и функциональности веб-приложений.
Базовый Синтаксис директивы location в Nginx
Директива location
в Nginx определяется в файле конфигурации nginx.conf
. Ниже вы можете увидеть её базовый синтаксис:
location [modifier] uri { ... }
modifier
: необязательный параметр, определяющий тип соответствия (например,exact
,prefix
,regex
).uri
: URI, который должен быть сопоставлен.- Внутри фигурных скобок можно задать различные параметры и инструкции (например,
proxy_pass
,root
,index
).
Пример точного Совпадения
Точное совпадение происходит, когда запрошенный URI точно соответствует указанной строке.
location = /exact-match { root /var/www/html; index index.html; }
В этом примере блок location будет обрабатывать только запросы к /exact-match
.
Вы также можете включить условие с помощью оператора if
. Имейте в виду, что в Nginx нет прямого аналога обычного оператора if-else
, который используется в различных языках программирования. Однако аналогичную функциональность можно получить, объединив несколько операторов if
с другими директивами для имитации условного перехода.
location = /exact-match { root /var/www/html; index index.html; if ($http_user_agent ~* "Chrome") { add_header X-Browser "Chrome"; } }
В этом случае, если пользовательский агент идентифицируется как Chrome, ответ будет содержать дополнительный заголовок X-Browser.
Пример соответствия префикса
Префиксное соответствие — наиболее распространённый тип, который соответствует любому URI, начинающемуся с указанной строки.
location /prefix { root /var/www/html; index index.html; if ($request_method = POST) { return 405; # Метод, который не разрешен } }
Этот блок location будет обрабатывать любой запрос, начинающийся с /prefix
— например, /prefix/page1
или /prefix/page2
. Если метод запроса — POST
, Nginx возвращает статус 405 Method Not Allowed
.
Пример соответствия регулярному выражению
Для более сложных сценариев сопоставления полезны регулярные выражения. В Nginx регулярное выражение может содержать подстановочные знаки — символы, которые соответствуют любому символу или группе символов. Наиболее распространённые подстановочные знаки в регулярных выражениях Nginx:
.
: Соответствует любому отдельному символу..*
: Соответствует любой последовательности символов (включая отсутствие символов).^
: Соответствует началу строки.$
: Соответствует концу строки.