Модуль 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
none |
blocked |
server_names |
строка
...;
|
умолчание:
|
—
|
контекст:
|
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\.;
|