首页  >  问答  >  正文

nginx环境下,如何禁止多个域名访问自己的网站?

通过流量来源分析,发现一些通过某些域名进入本站并恶意点击广告的问题,如何通过nginx规则来屏蔽这些域名呢?

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

以上规则无效,请高手帮忙写一个规则。

phpcn_u1582phpcn_u15822685 天前431

全部回复(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
  • 取消回复