nginx環(huán)境下,如何禁止多個(gè)域名訪問自己的網(wǎng)站?
問題描述
通過流量來源分析,發(fā)現(xiàn)一些通過某些域名進(jìn)入本站并惡意點(diǎn)擊廣告的問題,如何通過nginx規(guī)則來屏蔽這些域名呢?
if ( $host = 'www.xxx.net' or $host = 'ads.xxx.com' ) { rewrite ^/(.*)$ http://www.sdfdsfgffghgf3sdfsdsdfsdf.com/$1 permanent;}
以上規(guī)則無效,請(qǐng)高手幫忙寫一個(gè)規(guī)則。
問題解答
回答1:嘗試了以上的方法,都沒有成功。請(qǐng)問,以上的規(guī)則是放在那個(gè)段里呢?
在一些網(wǎng)站上找到了,這樣的一個(gè)規(guī)則:
<IfModule mod_rewrite.c>
RewriteEngine On
Block domainRewriteCond %{HTTP_REFERER} ads.acesse.com [NC]RewriteRule ^(.*)$ -[F]
如果是轉(zhuǎn)換成nginx規(guī)則的話是否正確:
if ($http_referer ~* 'ads.acesse.com'){set $rule_0 1$rule_0;
}if ($rule_0 = '1'){ rewrite ^/(.*)$ /-[F];}
請(qǐng)高手幫忙判斷看看。
需要的效果:封禁通過某域名跳轉(zhuǎn)到目標(biāo)站,例如從xxx.com跳轉(zhuǎn)到aaa.com進(jìn)行惡意刷流量和點(diǎn)擊廣告:
環(huán)境:nginx規(guī)則:
if ($http_referer ~* ads.xxx.com){ set $rule_0 1$rule_0;}if ($rule_0 = '1'){ rewrite ^/(.*)$ /-[F];}
把以上規(guī)則放在server段即可,經(jīng)測試兩天暫未發(fā)現(xiàn)通過某域名跳轉(zhuǎn)進(jìn)來。
回答2:你這個(gè)只是 server_name跳轉(zhuǎn),按你說的,應(yīng)該是來路判斷,所以要判斷refer
valid_referers none blocked www.mydomain.com *.mydomain.com; if ($invalid_referer) { return 403; }
上面是白名單制度,也可以采用黑名單規(guī)則
location / { if ($http_referer ~* ^xxxxx$) { rewrite 493; }}回答3:
在server里加上以下代碼:
listen 80 default; server_name _; return 500;
