Заметка по мотивам обращения одного из клиентов. Защищаем домен и отбиваем атаку рефспама с помощью Nginx.
Самым простым способом защиты будет перечисление проблемных реферов, и отдача 444 ошибки соединениям с ними:
if ($http_referer ~* "(domain1.com|domain2.com|domain3.com)") { return 444;
Используем map.
C помощью map, мы можем пометить нежелательный рефер:
map $http_referer $bad_referer { default 0; "~domain1.com" 1; "~domain2.com" 1; "~domain3.com" 1; #... "~domainN.com" 1; }
А затем отдать таким соединениям код 444:
if ($bad_referer) { return 444; }
Используем valid_referers.
Параметр valid_referers задаёт значения поля Referer, при которых переменная invalid_referer будет пустой. В остальных случаях invalid_referer получит значение 1.
valid_referers none blocked server_names *.domain.com domain.* www.domain.ru/path/ ~\.google\. ~\.yandex\.;
Далее, просто выполняем проверку, и если invalid_referer оказывается не пустой, отдаём ответ 444.
if ($invalid_referer) { return 444; }
Используем готовые списки.
Энтузиасты на Github предлагают уже готовые решения в виде списков или заранее заготовленных конфигов для Nginx (и других веб-серверов на самом деле), в которых собраны домены, продвигаемые рефспамом. Пример такого репозитория — referrer-spam-blocker. Использовать такие решения или нет, каждый администратор для себя решает сам. Как минимум, при использовании такого списка стоит проверить, нет ли чего-то лишнего в нём, и только потом применять его на своём сервере.
Добрый день. А как сделать тоже самое для nginx
Видимо надо хоть что-то знать про nginx, что бы вопросы задавать про него, читая про него же пост…..