$http_*

Переменная $http_ содержит значение конкретного HTTP-заголовка из запроса клиента, с префиксом 'http_'. — NGINX Core (HTTP)

$http_* NGINX Core (HTTP)

Описание

В NGINX переменная "$http_" является динамическим префиксом для доступа к HTTP-заголовкам запроса, отправленным клиентом. Синтаксис этой переменной — "$http_", где `` приводится к нижнему регистру, а дефисы заменяются на подчёркивания. Например, если клиент отправляет заголовок `X-Forwarded-For`, его значение можно получить с помощью `$http_x_forwarded_for`. Эта функциональность позволяет NGINX удобно обрабатывать различные заголовки, обеспечивая простой доступ к любому HTTP-заголовку по стандартной схеме именования. Когда клиент делает запрос к серверу, все HTTP-заголовки доступны в контексте запроса, и NGINX заполняет переменные `$http_` в процессе обработки запроса. Эти переменные могут использоваться в различных контекстах в конфигурационном файле, таких как `server`, `location` и `if` блоки. Часто через эту переменную получают доступ к заголовкам авторизации, пользовательским заголовкам приложения и стандартным заголовкам, таким как `User-Agent` или `Accept-Encoding`, что позволяет гибко управлять запросом или выполнять условную обработку в зависимости от наличия или значения тех или иных заголовков.

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

server {
    listen 80;
    location /example {
        if ($http_user_agent ~* "Googlebot") {
            return 403;
        }
        add_header X-Your-Header "$http_x_your_header";
    }
}

Подсистема

http

Кэшируется

Да

Тип

Префиксная переменная

Контексты

http, server, location, if

Не забудьте привести имя заголовка к строчным буквам и заменить дефисы на подчёркивания при формировании имени переменной, как в `$http_x_forwarded_for`.

Убедитесь, что заголовки присутствуют в запросе клиента; обращение к несуществующему заголовку просто вернёт пустую строку.

Используйте правильный контекст для этой переменной, чтобы она вела себя ожидаемо. Она может не работать должным образом, если вызывается в неправильном контексте.