Nginx: блокировать спам реферера
В этой статье мы покажем вам, как блокировать спам-реферер на одном из наших веб-серверов Nginx.
1. Найти шаблоны
Проверьте файл Nginxaccess.log и определите шаблоны «спама-реферера».
$ sudo tail -f /var/log/nginx/access.log
Некоторые шаблоны:
200 http://???.ru/engine/redirect.php?url=http://mywebsite.com/site/blogspot.com.au 200 http://???.com/tp/out.php?link=alternatevideo&url=http%3A//mywebsite.com/site/readyliftproshop.com 200 http://???.edu/online/redirect.asp?url=http://mywebsite/site/wheretoshophongkong.com
Мы собираемся заблокировать следующие шаблоны:
-
redirect.php
-
out.php
-
redirect.asp
2. Блок & Возврат 405
Отредактируйтеsites-enabled/default, если какой-либо из вышеперечисленных шаблонов соответствует, вернуть 405 напрямую.
if ($http_referer ~* (redirect.php|redirect.asp|out.php) ) {
return 405;
}
Просмотрите полный пример на нашем веб-сервере Nginx, на самом деле мы блокируем множество шаблонов спама.
/etc/nginx/sites-enabled/default
server {
listen 80;
server_name mysite.com;
root /etc/tomcat7/webapps/mysite;
proxy_cache one;
if ($http_referer ~* (seo|referrer|redirect|link=|url=|url?|path=|dku=|babes|click|girl|jewelry|love|organic|poker|porn|sex|teen|video|webcam) ) {
return 405;
}
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}
Готово, перезапустите Nginx.
Проверьте файл журнала еще раз, теперь все будущие запросы, которые соответствуют заявленным шаблонам, будут возвращены 405.
$ sudo tail -f /var/log/nginx/access.log
405 http://???.ru/engine/redirect.php?url=http://mywebsite.com/site/blogspot.com.au 405 http://???.com/tp/out.php?link=alternatevideo&url=http%3A//mywebsite.com/site/readyliftproshop.com 405 http://???.edu/online/redirect.asp?url=http://mywebsite/site/wheretoshophongkong.com