$http_referer

Переменная $http_referer содержит значение HTTP‑заголовка Referer из запроса клиента. — NGINX Core (HTTP)

$http_referer NGINX Core (HTTP)

Описание

Переменная $http_referer используется в NGINX для доступа к значению HTTP‑заголовка запроса 'Referer', который указывает URL веб‑страницы, ссылающейся на запрашиваемый ресурс. Эта переменная помогает определить, откуда приходят посетители, позволяя администраторам сервера выполнять логику на основе исходных страниц. Например, если сайт предлагает бонусы за рефералов, он может использовать эту переменную для отслеживания того, приходят ли пользователи с партнёрского сайта. Значение $http_referer устанавливается на основе HTTP‑заголовков, отправленных браузером. Если браузер не отправляет заголовок Referer (что может происходить из‑за настроек конфиденциальности пользователя), переменная будет пустой. Типичные значения этой переменной — URL‑адреса веб‑сайтов, но она также может отсутствовать в защищённых контекстах или при перенаправлениях между разными протоколами (например, из HTTPS в HTTP). Поэтому важно обрабатывать возможное отсутствие этой переменной в ваших конфигурациях или скриптах, чтобы избежать непредвиденного поведения. Кроме того, необходимо обеспечивать корректную санитизацию при использовании этой переменной для таких целей, как логирование или принятие решений, так как она может быть подделана клиентами. Эта переменная обычно применяется в правилах контроля доступа, логирования или перенаправления, позволяя осуществлять детальный контроль на основе источника запроса.

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

location /example {
    if ($http_referer ~* "example.com") {
        return 403;
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Если клиент не отправляет заголовок Referer, $http_referer будет пустым, что может привести к непредвиденному поведению, если это не обработать должным образом.

Полагаться на эту переменную для управления доступом рискованно, поскольку пользователи могут изменить заголовок Referer или использовать средства конфиденциальности, которые его исключают.