Nginx防盗链
防止别人盗链的解决办法:
1.在图片。视频上面打水印
2.防火墙控制,根据IP控制
3.防盗链
防盗链解决办法:
1、根据http referer实现防盗链
在HTTP协议中,有一个表头字段交referer,使用URL格式来表示从哪里来的链接到当前网页的资源,通过referer可以检测目标访问的来源网页,如果是资源文件,可以跟踪到显示它的网页地址,一旦检测出来源地址并不是本站就进行组织或者放回显示页面
apache、nginx、lighttpd三者都支持根据 http referer实现防盗链
2、根据cookie处理.
3、通过加密变换访问路径实现防盗链
lighttpd有类似的插件 mod_secdownload
####################################################################
Nginx防盗链详细解说
valid_referers none blocked www.lvnian.com lvnian.com;
其中 none表示空的来路,也就是直接访问,比如直接在浏览器打开一个图片;blocked表示被防火墙标记过的来路;server_names也就是域名了。0.5.33以后的版本中,可以用*.lvnian.com来表示所有的二级域名
一、针对不同的文件类型
location ~* \.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ { valid_referers none blocked *.lvnian.com lvnian.com; if ($invalid_referer) { #rewrite ^/ http://www.765h.com/error.html; return 403; }}
第一行:wma|gif|jpg|png|swf|flv 表示对wma、gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行:*.lvnian.com lvnian.com
表示对*.lvnian.com lvnian.com这2个来路进行判断(*代表任何,任何的二级域名),你可以添加更多if{}里面内容的意思是,如果来路不是指定来路就跳转到403错误页面,当然直接返回404也是可以的,也可以是图片。
二、针对不同的目录
location /img/ { root /data/img/; valid_referers none blocked *.lvnian.com lvnian.com; if ($invalid_referer) { rewrite ^/ http://www.lvnian.com/error.gif; #return 403; }}
301跳转
if ($request_uri ~* "^/forum\.php\?mod=viewthread&tid=([0-9]+)") { set $tid $1; rewrite .* /thread-$tid-1-1.html? permanent; }