$uri

Переменная $uri в NGINX возвращает часть URI запрошенного ресурса без информации о домене или протоколе. — NGINX Core (HTTP)

$uri NGINX Core (HTTP)

Описание

Переменная $uri устанавливается во время обработки HTTP-запроса в NGINX и в основном заполняется неэкранированным request URI, который является частью URL, следующей за доменом и протоколом. Эта переменная может включать путь и query string запрашиваемого ресурса, но не будет содержать дополнительных модификаций, внесённых server или location директивами. Значение $uri определяется на раннем этапе обработки запроса, обычно когда NGINX разбирает клиентский запрос. Это означает, что оно отражает исходное значение, отправленное клиентом, до любых внутренних rewrites или redirects. При использовании в конфигурации сервера переменная $uri позволяет принимать решения на основе фактически запрошенного ресурса. Она особенно полезна в location blocks для контроля доступа, логирования или перенаправления трафика. Значение обычно представляет собой строку, описывающую путь к файлу или маршрут, и может иметь формат '/images/photo.jpg' или '/api/v1/users'. Следует отметить, что если запрос обрабатывался в другом location block, который переписал URI, переменная $uri отразит это изменение.

Пример конфига

location /images {
    alias /var/www/images;
    error_page 404 = /404.html;
}

location /api/v1 {
    proxy_pass http://backend;
    access_log /var/log/nginx/api_access.log;
    if ($uri ~* /user/(\d+)) {
        # Do something specific for user URIs
    }
}

Подсистема

http

Кэшируется

Нет

Контексты

http, server, location, if, limit_except

Значение $uri может изменяться в зависимости от внутренних правил переписывания, заданных в конфигурации NGINX, поэтому будьте осторожны при использовании его для сопоставления с конкретными блоками location.

$uri не включает строку запроса; используйте $request_uri, если вам нужны и URI, и строка запроса.