$request_uri
Переменная $request_uri содержит исходный URI запроса, отправленный клиентом, включая строку запроса, если она присутствует. — NGINX Core (HTTP)
Описание
Переменная $request_uri — ключевая переменная в NGINX, которая содержит полный URI, запрошенный клиентом. Это включает как путь, так и строку запроса, если она присутствует. Она устанавливается во время обработки запроса, конкретно в момент чтения NGINX строки запроса от клиента, что позволяет сформировать ответ на основе этого URI. Эта переменная важна для маршрутизации запросов, формирования логов и выполнения перенаправлений или перезаписей по необходимости. Типичные значения $request_uri могут быть путями, такими как "/products/item?id=123" или "/api/v1/users", где первый содержит строку запроса, а второй — нет. Это делает $request_uri полным способом ссылаться на точный запрос с точки зрения пользователя. Она часто используется вместе с другими переменными для логирования запросов, контроля доступа и оптимизации поведения ответов в зависимости от типа или параметров запроса.
Пример конфига
location /api {
if ($request_uri ~* "/products") {
# Handle product requests
proxy_pass http://backend;
}
}
location / {
log_format main '$remote_addr - $remote_user [$time_local] "$request $request_uri" $status $body_bytes_sent';
access_log /var/log/nginx/access.log main;
}Подсистема
httpКэшируется
ДаКонтексты
http, server, location, ifУбедитесь, что используете $request_uri только тогда, когда вам нужен полный URI. Если нужен только путь без строки запроса, используйте $uri.
Будьте осторожны при использовании $request_uri в условных блоках, так как это может привести к непредвиденному поведению, если выражение не будет корректно оценено.