DANFA

Nginx: Что такое  $invalid_referer  и как его использовать?

В Nginx переменная $invalid_referer доступна в сочетании с директивой valid_referers и позволяет контролировать поступившие запросы по критерию реферера (то есть источника, откуда пришел запрос). Эта возможность помогает бороться с атаками прямого доступа к ресурсам (hotlinking), несанкционированным скачиванием файлов и другими видами злоупотреблений.

Как работает $invalid_referer?


  1. Определение допустимых рефереров: Директива valid_referers определяет, какие источники запросов считаются легитимными. Если запрос поступил с незаданного источника, переменная $invalid_referer принимает значение true.
  2. Проверка реферера: Используя оператор if, вы можете проверить переменную $invalid_referer. Если она истинна, запрос отклоняется или перенаправляется особым образом.

Пример использования
Предположим, вы хотите запретить прямую загрузку изображений с вашего сайта для посторонних сайтов. Вы можете настроить следующий блок в конфигурации Nginx:
location ~* \.(jpg|jpeg|gif|png)$ {
    valid_referers none blocked server_names example.com www.example.com;
    if ($invalid_referer) {
        return 403; # Заблокировать запрос с чужих сайтов
    }
}

Логика работы:
  • Любой запрос на изображение проверяется на принадлежность к разрешенным источникам (доменам).
  • Если запрос пришел с неподтвержденного домена, Nginx возвращает статус 403 (Forbidden).

Режимы директивы valid_referers:
  • none: Запрещает запросы без реферера (прямой ввод URL).
  • blocked: Запрещает запросы с забаненными IP или странными реферерами.
  • server_names: Включает список доменов, которые допускаются как источники запросов.

Полезные советы по использованию $invalid_referer


  • Остерегайтесь ловушек IF: Обратите внимание, что конструкция if ($invalid_referer) подвержена известным проблемам при неправильной настройке. Всегда тестируйте вашу конфигурацию перед внедрением.
  • Мониторинг: Ведите мониторинг запросов с недействительной ссылкой. Это даст представление о том, насколько успешна защита и нужны ли дополнительные меры.
  • Администрирование исключений: Если нужно разрешить доступ отдельным пользователям или сервисам, можно добавить исключения в список разрешенных рефереров.

Переменная $invalid_referer является мощным инструментом в борьбе с хотлинком и прочими нарушениями безопасности. Грамотная настройка рефереров и своевременная обработка недопустимых запросов поможет защитить ваши ресурсы и снизить нагрузку на сервер.
Автор:  17.10.2025 10:00:29 am