首頁  >  問答  >  主體

nginx環境下,如何禁止多個網域造訪自己的網站?

透過流量來源分析,發現一些透過某些網域進入本站並惡意點擊廣告的問題,如何透過nginx規則來封鎖這些網域呢?

if ( $host = "www.xxx.net" or $host = "ads.xxx.com" ) {
    rewrite ^/(.*)$ http://www.sdfdsfgffghgf3sdfsdsdfsdf.com/ permanent;
}

以上規則無效,請高手幫忙寫一個規則。

phpcn_u1582phpcn_u15822735 天前471

全部回覆(3)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-16 17:27:31

    嘗試了以上的方法,都沒有成功。
    請問,以上的規則是放在那個段落呢?

    在一些網站上找到了,這樣的一個規則:

    <IfModule mod_rewrite.c>
    

    RewriteEngine On

    Block domain

    RewriteCond %{HTTP_REFERER} ads.acesse.com [NC]
    RewriteRule ^(.*)$ -[F]

    如果是轉換成nginx規則的話是否正確:

    if ($http_referer ~* "ads.acesse.com"){
    set $rule_0 1$rule_0;
    

    }
    if ($rule_0 = "1"){
    rewrite ^/(.*)$ /-[F];
    }

    請高手幫忙判斷看看。

    需要的效果:封禁透過某網域跳到目標站,例如從xxx.com跳到aaa.com進行惡意刷流量和點擊廣告:

    環境:nginx
    規則:

        if ($http_referer ~* ads\.xxx\.com){
        set $rule_0 1$rule_0;
    }
    if ($rule_0 = "1"){
        rewrite ^/(.*)$ /-[F];
    }
    

    把以上規則放在server段即可,測試兩天暫未發現透過某網域跳轉進來。

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-16 17:27:31

    你這個只是 server_name跳轉,
    照你說的,應該是來路判斷,
    所以要判斷refer

        valid_referers none blocked www.mydomain.com *.mydomain.com; 
     
     if ($invalid_referer) { 
        return   403; 
      } 

    上面是白名單制度,也可以採用黑名單規則

      location / {
        if ($http_referer ~* ^xxxxx$) {
           rewrite 493;
        }
    }

    回覆
    0
  • 習慣沉默

    習慣沉默2017-05-16 17:27:31

    在server裡加上以下程式碼:

        listen       80 default;
        server_name  _;
        return 500;
    

    回覆
    0
  • 取消回覆