配置Nginx实现简单的反盗链

盗链是指一个网站的资源(图片资源、视频资源、文件等)未经许被其它网站提供浏览和下载。

盗链行为会对服务器资源以及带宽消耗非常大,但实际网站的访问量却并没有得到提升。所以网站必须要有有效的防盗链措施。

本文通过Nginx的配置指令valid_referers来实现简单的图片和其它类型文件的防盗链。

nginx 配置内容如下:

location ~ .(jpg|png|gif)$ {
     valid_referers none blocked mysite.com *.mysite.com;
     if ($invalid_referer) {
         return   403;
     }
}

用 “ | ” 来分隔你想保护的文件的扩展名。

valid_referers指令允许你定义一个网站列表,当不在列表中的网站访问时,返回403错误。

none参数表示匹配没有Referer的HTTP请求。

blocked参数表示请求有Referer,但是被防火墙或者代理服务器修改,去掉了https://或http://。

后面跟网站列表,支持顶级域名和二级域名以及通配符。

除了使用location对文件访问进行限制,也可以对指定目录进行限制。

下面的配置会对images目录下所有文件进行防盗链处理:

location /images/ {
     valid_referers none blocked mysite.com *.mysite.com;
     if ($invalid_referer) {
         return   403;
     }
}

这些配置都是简单的防盗链方法。可有效地屏蔽一些直接引用网站链接的盗链方式;如果盗链网站伪造了HTTP请求,这种方法不能有效地屏蔽。

反盗链的一些其它措施

比较原始的方法是定期更换目录名或者文件名。这种方法可使用脚本程序来自动化处理。比较高级的方法是进行Cookie或者Session加密验证,添加验证码等。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/1152.html

分类: 计算机技术
推荐阅读:
Linux使两个文件的权限相同 在Linux系统下,你可以使用一条命令就能令两个文件的权限相同;
Golang中的常量 Go语言使用const关键字来声明一个常量
Golang生成一个整数范围内的随机整数 在Golang中,可以通过math/rand包的Intn(n)函数生成一个0~n之间的随机整数,碰到100~200、-10~10这样的整数段却无能为力了;
Python issubclass()函数 在Python中,issubclass()函数用于判断一个类是否是另一个类的子类。
Linux查看实时活动的网络服务 在Linux系统下,你可以使用一条命令即可查看系统当前实时活动的网络服务:
Rust file宏的用法和示例 在Rust中,file宏用于获取当前源文件的文件名;这在调试和日志记录等场景中非常有用,因为你可以动态地获取当前代码所在的文件名;