$http_*

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

Описание

В NGINX переменная "$http_" является динамическим префиксом для доступа к HTTP-заголовкам запроса, отправленным клиентом. Синтаксис этой переменной — "$http_<header-name>", где <header-name> приводится к нижнему регистру, а дефисы заменяются на подчёркивания. Например, если клиент отправляет заголовок 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_x_forwarded_for.

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

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

← Ко всем переменным