|
Модуль 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\.;
|