草根站长 发表于 2013-4-26 11:13:19

Nginx下防止被非法域名绑定防盗链的方法

一、防绑定
编外:这样可以防止别人把非法网站的域名转向你的IP害你网站遭殃。
Nginx 的默认虚拟主机在用户通过IP访问,或者通过未绑定的域名访问(比如有人把他自己的域名偷偷指向了你的ip)的时候生效。默认虚拟主机一般就是你主目录的网站。避免被未绑定的域名访问网站,这样做的好处有很多,大家都懂的。deepvps这里就不啰嗦了。下面只说一下解决的办法。

两种解决方案:
1,比如别人直接通过ip或者未绑定域名访问你VPS的时候,你希望禁止显示任何有效内容,可以给他返回一个500错误, 就可以这样设置:

server {
listen 80 default;
return 500;
}
2. 也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:

server {
listen 80 default;
rewrite ^(.*) http://bbs.baidu.com permanent;
}

高级一点的:
在虚拟主机最前面加上如下即可,记住一定要以它开头(不然不生效)。
   server {
      listen 80 default;
      server_name _;
      return 500;
      access_log off;
      }
      
    server {
      listen 80;
      server_namel.domain.com;
      charset utf-8,GB2312;
      indextrack.gif;
      if (-d $request_filename) {
      rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
      }

二.简单防盗链:
1.针对photos目录,如果不是从www.mydomain.com和mydomain.com来访问,就返回403
location /photos/ {
valid_referers none blocked www.mydomain.com mydomain.com;
if ($invalid_referer) {
return 403;
    }
}

2.正对以下后缀名结尾的,如果不是从www.mydomain.com和mydomain.com来访问,就返回403
location ~ .*\.(gif|jpg|jpeg|swf|png|flv)$ {
valid_referers none blocked www.mydomain.com mydomain.com;
if ($invalid_referer) {
return 403;
   }
}
error_page 403 =200 /200.jpg;    #将403返回成为200
location /200.jpg {            
empty_gif;                     #返回空白图片
}
这样,nginx在处理HTTP请求时,如果发现其URL匹配到Empty Gif所属的Location(本例中为/200.jpg),
则使用ngx_http_empty_gif作为处理函数,这个函数直接向浏览器写回一幅1×1的空白gif图片。

还有一种变通的方法。如果你用的是LNMP的话,在主目录不要放网站,放个探针之类的也可以避免被未绑定的域名访问网站。把真正的网站开在虚拟空间下面就可以了。
页: [1]
查看完整版本: Nginx下防止被非法域名绑定防盗链的方法