Nginx的防盗链技能

Posted 小破孩楼主

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx的防盗链技能相关的知识,希望对你有一定的参考价值。

防盗链是什么意思呢?举个简单的例子,我买了某个视频的版权,还花了大价钱买了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的,对防御大部分浏览器还行,但是防御自定义客户端伪造头部就没法了。

以上是关于Nginx的防盗链技能的主要内容,如果未能解决你的问题,请参考以下文章

Nginx系列:Nginx + keepalived 实现高可用 + 防盗链 + 动静分离

Nginx系列:Nginx + keepalived 实现高可用 + 防盗链 + 动静分离

nginx 防盗链简单配置

nginx 防盗链

nginx 图片防盗链 设置

Nginx防盗链访问控制 解析php相关配置及Nginx代理