Nginx的防盗链技能

匆匆过客 提交于 2020-02-09 20:47:26

防盗链是什么意思呢?举个简单的例子,我买了某个视频的版权,还花了大价钱买了CDN,但是其他人直接链接指向我的这个视频,那我这视频直接出现在别人网站的页面上,那我岂不巨亏。
网站资源被盗链简单来说就是别人不是从你的网站通过下载资源,被盗链的几种可能情况:
1、在人气非常旺的网站、论坛、社区的网页里直接引用了你网站上的图片,或者直接在其他网页(使用flash或媒体播放插件)里嵌入了你网站上的mp3。
2、在人气非常旺的网站、论坛、社区里提供了你的资源的下载地址。
3、你网站的资源可能被一些下载软件列入了“资源候选名单”,当其他人用下载工具下载相同的文件时,下载软件会自动找上门并且从你的服务器下载。

简单有效的防盗链措施 referer 模块

  • 原理:
    某网站通过url引用了你的页面,当用户在浏览器上点击了url时,http请求的头部会通过referer头部,将该网站的当前url带上,告诉服务器本次请求是从哪里发起的。
    通过referer模块,用invalid_referer 变量根据配置判断referer头部是否合法。
    http://nginx.org/en/docs/http/ngx_http_referer_module.html
  • valid_referer 指令
    参数:
  • none 允许确实referer头部的请求访问
  • block 允许referer头部没有对应的值的请求访问
  • server_names 若referer中的域名与server_name 中的本机某个域名匹配则允许访问。(或可以指定表达式)
    valid_referers none blocked server_names
                   *.example.com example.* www.example.org/galleries/
                   ~\.google\.;
    
    if ($invalid_referer) {
        return 403;
    }
    可以看到referer 模块生效了,因为referer头带的 referer.wjx.com 并没有在配置中匹配到。
    但是这种是比较low的,对防御大部分浏览器还行,但是防御自定义客户端伪造头部就没法了。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!