Nginx核心要领七:referer防盗链

x33g5p2x  于2021-12-20 转载在 其他  
字(1.1k)|赞(0)|评价(0)|浏览(424)

nginx的referer防盗链模块,利用http请求头中的 referer 信息进行校验,判断该请求是否为合法请求,是则放行,否则可以自定义返回一个结果,可防止大部分网址引用自己的资源,但是referer是可以伪造的,伪造后可以继续访问资源

nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求,默认编译进nginx,可以通过–without-http_referer_module禁用

先搭建Nginx静态资源服务,放几个图片,然后用CSDN外链这个图片,判断搭建的静态资源是否已经开启了防盗链功能
配置文件内容如下:

server {
    listen       80;
    server_name  zy.csxiuneng.com;
    #允许跨域访问
    #add_header 'Access-Control-Allow-Origin' '*';
    location / {
       #开启referers防盗链,只能 *.csxiuneng.com 能访问该location下的资源
       valid_referers none blocked server_names *.csxiuneng.com;
       if ($invalid_referer) {
         #盗链时返回403
         return 403;
       }
       alias zhuyu/;
       autoindex on;
    }
}

invalid_referer变量值,允许访问时值为空,不允许访问时值为1

在nginx/zhuyu/img 下放了几张图片,因为开启了 autoindex on ,访问链接时会以目录的形式返回,可看到img下面有哪些文件

再访问这张图片,可以正常访问

现在用CSDN写文章,插入图片,填写该地址 http://zy.csxiuneng.com/img/1801.jpg,再浏览看是否已防止了CSDN的图片盗链
[外链图片转存失败(img-WQPNaQga-1566791119189)(http://zy.csxiuneng.com/img/1801.jpg)]

通过F12开发者工具可以看到1801.jpg以403响应的,说明防盗链成功

更多

#为了加速访问,可以对referer模块设置共享内存,通过如下指令设置
syntax: referer_hash_bucket_size size;
default: referer_hash_bucket_size 64;
context: server,location

syntax: referer_hash_max_size size;
default: referer_hash_max_size 2048;
context: server,location

相关文章