美文网首页
nginx 防盗链配置

nginx 防盗链配置

作者: JJNile | 来源:发表于2019-05-30 23:27 被阅读0次

为了防止资源给盗用,从而给我们的所在服务器造成额外的负担,需要采取防盗链的措施。

使用 nginx 模块ngx_http_referer_module 来阻挡来源非法的域名请求,以下我们利用 referer 指令实现防盗链。

文件类型防盗链

# 需要防盗的后缀
location ~* \.(jpg|jpeg|png|gif|bmp|swf|rar|zip|doc|xls|pdf|gz|bz2|mp3|mp4|flv)$
    #设置过期时间
    expires     30d;
    # valid_referers 就是白名单的意思
    # 支持域名或ip
    # 允许ip 192.168.0.1 的请求
    # 允许域名 *.google.com 所有子域名
    valid_referers none blocked 192.168.0.1 *.google.com;
    if ($invalid_referer) {
        # return 403;
        # 盗链返回的图片,替换盗链网站所有盗链的图片
        rewrite ^/ https://site.com/403.jpg;
    }
    root  /usr/share/nginx/img;
}

以上配置主要看 valid_referers,这个变量代表只允许网址访问,上面配置中允许 IP 为 192.168.0.1 和 Google 搜索引擎访问图片该服务下的资源,否则就重定向到一张默认图片

valid_referers 参数说明

valid_referers    none | blocked | server_names | string …;

none:缺少“Referer”请求头;

blocked:“Referer” 请求头存在,但是它的值被防火墙或者代理服务器删除。这些值都不以“http://” 或者 “https://”字符串作为开头;

server_names:“Referer” 请求头包含某个虚拟主机名;

任意字符串:定义一个服务器名和可选的URI前缀。服务器名允许在开头或结尾使用“*”符号。当nginx检查时,“Referer”请求头里的服务器端口将被忽略;

正则表达式:必须以“~”符号作为开头。 需要注意的是表达式会从“http://”或者“https://”之后的文本开始匹配;

如果不允许通过文件直链进行访问和下载,只能在限定的域名中引用和下载,删除valid_referers这行代码中的noneblocked这两个值即可。

指定目录防盗链

location /images/ { 
  alias /data/images/; 
  valid_referers none blocked server_names *.moewah.com *.mao.sh ; 
  if ($invalid_referer) {return 403;} 
} 

伪造 Referer 的请求很容易实现,所以这种方法无法真正阻止有心的盗链

参考

https://www.moewah.com/archives/898.html

相关文章

网友评论

      本文标题:nginx 防盗链配置

      本文链接:https://www.haomeiwen.com/subject/alqitctx.html