$invalid_referer
доступна в сочетании с директивой valid_referers
и позволяет контролировать поступившие запросы по критерию реферера (то есть источника, откуда пришел запрос). Эта возможность помогает бороться с атаками прямого доступа к ресурсам (hotlinking), несанкционированным скачиванием файлов и другими видами злоупотреблений.Как работает $invalid_referer?
- Определение допустимых рефереров: Директива
valid_referers
определяет, какие источники запросов считаются легитимными. Если запрос поступил с незаданного источника, переменная$invalid_referer
принимает значение true. - Проверка реферера: Используя оператор
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
является мощным инструментом в борьбе с хотлинком и прочими нарушениями безопасности. Грамотная настройка рефереров и своевременная обработка недопустимых запросов поможет защитить ваши ресурсы и снизить нагрузку на сервер.