Nginx:ブロックリファラースパム
この記事では、Nginx Webサーバーの1つで参照スパムをブロックする方法を説明します。
1.パターンを見つける
Nginxの `access.log`ファイルをチェックし、” referrer spam “パターンを特定します。
$ 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.ブロック
`sites-enabled/default`を編集し、上記のいずれかのパターンがマッチした場合は405を直接返します。
if ($http__referer ~** (redirect.php|redirect.asp|out.php) ) { return 405; }
私たちのNginx Webサーバーの完全な例を見てください。実際には、多くのスパムのパターンをブロックしています。
/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
参考文献
-
http://wiki.nginx.org/Referrer
Spam
Blocking[Nginx.org:Referrer Spam
ブロッキング]。
ブロッキングリフェラルスパム
-
http://en.wikipedia.org/wiki/List
of
HTTP
status
codes– HTTPのリスト
ステータスコード]