nginx的防盗链配置比apache简单,同样用到了referers
#不记录指定的文件类型日志
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$
{
access_log off;
expires 15d;
valid_referers none blocked *.llzdwyp.com *.wyp.com *.llzd.com;
if ($invalid_referer) #无效referer 注意referer没有s
{
return 403; #返回403
}
}
测试:curl -e "http://www.baidu.com/111" -I -x127.0.0.1:80 ‘http://www.llzdwyp.com/static/image/smiley/default/kiss.gif‘
发现了403提示
-e用来指定referers 即是否百度可以打开指定链接,意味是否可以盗链。
测试:curl -e "http://www.wyp.com/111" -I -x127.0.0.1:80 ‘http://www.llzdwyp.com/static/image/smiley/default/kiss.gif‘
发现200正常
课后答疑:
1.nginx配置防盗链的时候的if ($invalid_referer)
{
return 403;
}
语句与shell脚本的if语句是否相同
答:都是判断语句,但这个是nginx的配置,shell是shell,有本质的区别,不要混为一谈。
2.在配置虚拟机的主配置文件时,中间用的是shell通配符,还是正则表达式。还是两者都可以??
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|gz|bz2)$ { ## 前面的“.*” ,是正则的形式
access_log off;
expires 5d;
valid_referers none blockef *.igbugs.com *.xyb_test.com; ## 这里的“*” ,是是用的通配符吧
答:有些地方是要用正则的,像带有 ~ 符号时后面一定是正则,而有些地方像这种域名那就是通配。讲究比较多,用多了就见怪不怪了。
原文地址:http://llzdwyp.blog.51cto.com/6140981/1694229