整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

nginx配置之nginx中的“防盗”配置

nginx配置之nginx中的“防盗”配置

般我们使用nginx常用的就那么几项,简单代理、反向代理、代理转发、负载均衡、重定向,等等。但是有时候又不得不进行另外的一些配置,下面介绍几种"防盗"配置。

爬虫 User-Agent 过滤

我们通过变量$http_user_agent来实现,变量$http_user_agent可以直接在location中引用。~*表示不区分大小写的正则匹配,其实,大部分爬虫都是Python爬虫,通过python就可以过滤掉80%的Python爬虫。

location / {
  if ($http_user_agent ~* "python|curl|java|wget|httpclient|okhttp") {
      return 503;
  }
  # 正常处理
  # ...
}

屏蔽文件目录

在Nginx中屏蔽文件目录,我们可以使用location指令和deny指令来实现。比如,通常我们会禁止访问版本控制的目录.git和.svn,另外,隐藏文件目录我们也会拒绝访问。

#通用备份和归档文件

location ~* "\.(old|orig|original|php#|php~|php_bak|save|swo|aspx?|tpl|sh|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rdf)$" {
    deny all;
}

#拒绝访问 .git 和 .svn 目录

location ~ (.git|.svn) {
    deny all;
}

#拒绝访问隐藏文件和目录

location ~ /\.(?!well-known\/) {
    deny all;
}

图片防盗链

我们通过使用valid_referers指令来定义合法的引荐网址列表,只有这些网址才能正常地获取到图片。如果请求没有提供或者不属于合法的引荐网址,直接返回404或者重定向到某个页面。

location ~* \.(gif|jpg|png|swf|flv)$ {
  root html;

  valid_referers none blocked *.nginx.com;

  if ($invalid_referer) {
    rewrite ^/ www.nginx.cn;
    # return 404;
  }
}

防盗图配置

跟上面一样,我们也是通过使用valid_referers指令来定义合法的引荐网址列表,只有这些网址才能正常地获取到图片。但是,如果请求没有提供或者不属于合法的引荐网址,我们返回一张固定的图片,让它获取不到真正的图片。

location ~ \/public\/(css|js|img)\/.*\.(js|css|gif|jpg|jpeg|png|bmp|swf) {
  valid_referers none blocked *.jslite.io;
  if ($invalid_referer) {
      rewrite ^/  http://wangchujiang.com/piratesp.png;
  }
}

阻止常见攻击

像base64编码的网址、javascript eval()的网址,通常是攻击来源,我们可以阻止它,不让它访问。

#base64编码的网址

location ~* "(base64_encode)(.*)(\()" {
    deny all;
}

#javascript eval() url

location ~* "(eval\()" {
    deny all;
}

使网站不可索引

如果我们不想搜索引擎收录我们的网站,我们可以通过向请求头中添加X-Robots-Tag标签,这个标签会告诉搜索引擎爬虫不要索引网站的任何内容。另外,可以配置我们的网站地图robots.txt返回全部都不允许,这样,搜索引擎爬虫也不会索引我们的网站。

大家都知道现在很多站点下载资料都是要收费的,无论是积分还是金币,想免费只能说很少很少了,那么这些网站是如何做到资源防盗链的呢?

这里推荐一款比较容易上手的神器,Nginx本身提供了secure_link来完成防盗链功能,可以给服务器文件链接添加时间戳和校验码,从而保护服务器文件不被任意下载盗用。

时序图

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

们经常会看到在浏览某一图片时会弹出一“403权限禁止”错误,这说明有可能正在浏览的这个网站用到的图片在盗用别的网站图片,而被盗用的网站采用了防盗链技术。那么怎样才能不让自己的网站受害呢?

下面我来介绍常用的两种方法

1一般的防盗链如下

location ~* \.(gif|jpg|png|swf|flv)$ {

valid_referers none blocked www.wosoquan.com wosoquan.com ;

if ($invalid_referer) {

rewrite ^/ http://www.wosoquan.com/retrun.html;

#return 403;

}

}

第一行:gif|jpg|png|swf|flv

表示对gif、jpg、png、swf、flv后缀的文件实行防盗链

第二行: 表示对www.ingnix.com这2个来路进行判断

if{}里面内容的意思是,如果来路不是指定来思是,如果来路不是指定来路就跳转到http://www.wosoquan.com/retrun.html页面,当然直接返回403也是可以的。

二:针对图片目录防止盗链

location /images/ {

alias /data/images/;

valid_referers none blocked server_names *.xok.la xok.la ;

if ($valid_referers) {return 403;}

}