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

我々は以下のパターンをブロックするつもりです:

  1. redirect.php

  2. out.php

  3. 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

参考文献

  1. http://wiki.nginx.org/Referrer Spam Blocking[Nginx.org:Referrer Spam

  1. http://en.wikipedia.org/wiki/List of HTTP status codes-- HTTPのリスト

ステータスコード]