6

リファラーclick2dad.netを持つすべてのhttp接続をブロックする必要があります。mysite.conf に次のように記述します。

 location / {
            valid_referers ~.*http://click2dad\.net.*;
            if ($invalid_referer = ''){
                    return 403;
            }
            try_files       $uri    $uri/   /index.php?$args;
    }

しかし、私はまだnginxログに表示されます:

HTTP/1.1" 200 26984 "http://click2dad.net/view/VUhfCE4ugTsb0SoKerhgMvPXcmXszU" 

403ではなく200

click2dad.net からすべてのクライアントをブロックするのは正しいのでしょうか?

4

3 に答える 3

17

valid_referers解決策は機能しますが、個人的には、そのように長いブラックリストを維持するのは困難です. ngx_http_map_module別の解決策は、モジュールを使用することです。ubuntu 14.04 nginx ディストリビューションでは、/etc/nginx/blacklist.conf ファイルを作成します。

# /etc/nginx/blacklist.conf

map $http_referer $bad_referer {
    hostnames;

    default                           0;

    # Put regexes for undesired referers here
    "~social-buttons.com"             1;
    "~semalt.com"                     1;
    "~kambasoft.com"                  1;
    "~savetubevideo.com"              1;
    "~descargar-musica-gratis.net"    1;
    "~7makemoneyonline.com"           1;
    "~baixar-musicas-gratis.com"      1;
    "~iloveitaly.com"                 1;
    "~ilovevitaly.ru"                 1;
    "~fbdownloader.com"               1;
    "~econom.co"                      1;
    "~buttons-for-website.com"        1;
    "~buttons-for-your-website.com"   1;
    "~srecorder.co"                   1;
    "~darodar.com"                    1;
    "~priceg.com"                     1;
    "~blackhatworth.com"              1;
    "~adviceforum.info"               1;
    "~hulfingtonpost.com"             1;
    "~best-seo-solution.com"          1;
    "~googlsucks.com"                 1;
    "~theguardlan.com"                1;
    "~i-x.wiki"                       1;
    "~buy-cheap-online.info"          1;
    "~Get-Free-Traffic-Now.com"       1;
}

次に、それを /etc/nginx/nginx.conf ファイルに含めます。

# /etc/nginx/nginx.conf


    http {
    # ...

      include blacklist.conf;

    # ...

    }

$bad_refererこれが完了したら、nginx サイトで状態を確認できます。

# /etc/nginx/sites-enabled/mysite.conf

server {
  # ...

  if ($bad_referer) { 
    return 444; 
  } 

  # ...
}

そして、これが機能することを確認するには、シェルで同様のコマンドを実行できます。

$ curl --referer http://www.social-buttons.com https://example.org

...あなたに与えるはずです:

curl: (52) Empty reply from server

このソリューションに関するブログ記事をhttps://fadeit.dk/blog/2015/04/22/nginx-referer-spam-blacklist/に書きました。

于 2016-08-11T09:00:44.477 に答える
3

式は、「http://」または「https://」の後に始まるテキストと照合されることに注意してください http://nginx.org/en/docs/http/ngx_http_referer_module.html

正しい構成:

 location / {
            valid_referers click2dad.net*;
            if ($invalid_referer = ''){
                    return 403;
            }
            try_files       $uri    $uri/   /index.php?$args;
    }
于 2014-06-09T10:15:21.820 に答える
0

多分あなたはこの設定を試すことができます:

 location / {
        valid_referers ~click2dad.net;
        if ($invalid_referer){
                return 403;
        }
        try_files       $uri    $uri/   /index.php?$args;
}

とにかく、正解はこのドキュメントにあるだけです。 http://nginx.org/en/docs/http/ngx_http_referer_module.html

于 2014-06-10T08:56:19.937 に答える