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