$http_user_agent

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

$http_user_agent NGINX Core (HTTP)

Описание

Переменная $http_user_agent в NGINX используется для получения строки User-Agent из входящих HTTP-запросов. Эта строка идентифицирует программное обеспечение клиента, выполняющего запрос, и обычно содержит информацию о типе браузера клиента, версии и операционной системе. Заголовок User-Agent обычно задаётся веб-браузерами, мобильными приложениями и различными клиентскими программами, чтобы сообщить серверу о своих возможностях и характеристиках. Важно отметить, что эта переменная заполняется на фазе обработки запроса, когда сервер получает запрос, что делает её доступной для логирования, обработки или условной конфигурации. Когда сервер NGINX обрабатывает входящий запрос, он разбирает различные HTTP-заголовки, и среди этих заголовков находится User-Agent. Если заголовок User-Agent присутствует в запросе, его значение сохраняется в переменной $http_user_agent, что позволяет администраторам сервера реализовывать правила на основе типа клиента, выполняющего запрос. Например, администраторы могут отдавать разный контент разным браузерам или устройствам на основании их строки User-Agent. Типичными значениями этой переменной могут быть строки вроде "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" для Google Chrome или "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" для Safari на iOS.

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

server {
    listen 80;

    location / {
        access_log /var/log/nginx/access.log;
        if ($http_user_agent ~* "MSIE") {
            return 403;  # Deny access to Internet Explorer users
        }
        # other configuration...
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Убедитесь, что заголовок User-Agent установлен в запросе; в противном случае переменная будет пустой.

Неправильное использование в условных блоках может привести к непредвиденному поведению, если заголовок User-Agent не будет корректно распознан.

Учтите возможность подделки user-agent; клиенты могут изменять этот заголовок, что делает его ненадежным для принятия решений по безопасности.