Модуль ngx_http_referer_module
Пример конфигурации Директивы referer_hash_bucket_size referer_hash_max_size valid_referers Встроенные переменные |
Модуль ngx_http_referer_module
позволяет блокировать доступ
к сайту для запросов с неверными значениями поля “Referer” в
заголовке.
Следует иметь в виду, что подделать запрос с нужным значением поля
“Referer” не составляет большого труда, поэтому цель
использования данного модуля заключается не в стопроцентном блокировании
подобных запросов, а в блокировании массового потока запросов, сделанных
обычными браузерами.
Нужно также учитывать, что обычные браузеры могут не передавать поле
“Referer” даже для верных запросов.
Пример конфигурации
valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.; if ($invalid_referer) { return 403; }
Директивы
Синтаксис: |
referer_hash_bucket_size |
---|---|
Умолчание: |
referer_hash_bucket_size 64; |
Контекст: |
server , location |
Эта директива появилась в версии 1.0.5.
Задаёт размер корзины хэш-таблиц со значениями “Referer”. Подробнее настройка хэш-таблиц обсуждается в отдельном документе.
Синтаксис: |
referer_hash_max_size |
---|---|
Умолчание: |
referer_hash_max_size 2048; |
Контекст: |
server , location |
Эта директива появилась в версии 1.0.5.
Задаёт максимальный размер
хэш-таблиц со значениями
“Referer”.
Подробнее настройка хэш-таблиц обсуждается в отдельном
документе.
Синтаксис: |
valid_referers
|
---|---|
Умолчание: | — |
Контекст: |
server , location |
Задаёт значения поля “Referer” заголовка запроса, при
которых встроенная переменная $invalid_referer
будет иметь
пустую строку в качестве значения.
В противном случае значение переменной равно “1
”.
Поиск совпадения производится без учёта регистра символов.
Параметры могут быть следующие:
none
- поле “Referer” в заголовке запроса отсутствует;
blocked
-
поле “Referer” в заголовке запроса присутствует,
но его значение удалено межсетевым экраном (firewall) или прокси-сервером;
к таким значениям относятся строки, не начинающиеся на
“
http://
” или “https://
”; server_names
- в поле “Referer” заголовка запроса указано одно из имён сервера;
- произвольная строка
-
задаёт имя сервера и необязательное начало URI.
В начале или конце имени сервера может быть “
*
”. При проверке порт сервера в поле “Referer” игнорируется; - регулярное выражение
-
в начале должен быть символ “
~
”. Необходимо учитывать, что на совпадение с выражением будет проверяться текст, начинающийся после “http://
” или “https://
”.
Пример:
valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.;
Встроенные переменные
$invalid_referer
-
Пустая строка, если значение поля “Referer” заголовка запроса
считается
правильным, иначе “
1
”.