nginx环境下,如何禁止多个域名访问自己的网站?
问题描述
通过流量来源分析,发现一些通过某些域名进入本站并恶意点击广告的问题,如何通过nginx规则来屏蔽这些域名呢?
if ( $host = 'www.xxx.net' or $host = 'ads.xxx.com' ) { rewrite ^/(.*)$ http://www.sdfdsfgffghgf3sdfsdsdfsdf.com/$1 permanent;}
以上规则无效,请高手帮忙写一个规则。
问题解答
回答1:尝试了以上的方法,都没有成功。请问,以上的规则是放在那个段里呢?
在一些网站上找到了,这样的一个规则:
<IfModule mod_rewrite.c>
RewriteEngine On
Block domainRewriteCond %{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段即可,经测试两天暂未发现通过某域名跳转进来。
回答2:你这个只是 server_name跳转,按你说的,应该是来路判断,所以要判断refer
valid_referers none blocked www.mydomain.com *.mydomain.com; if ($invalid_referer) { return 403; }
上面是白名单制度,也可以采用黑名单规则
location / { if ($http_referer ~* ^xxxxx$) { rewrite 493; }}回答3:
在server里加上以下代码:
listen 80 default; server_name _; return 500;