2.2-nginx配置防盗链

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; ## 这里的“*” ,是是用的通配符吧

答:有些地方是要用正则的,像带有 ~ 符号时后面一定是正则,而有些地方像这种域名那就是通配。讲究比较多,用多了就见怪不怪了。


你可能感兴趣的:(2.2-nginx配置防盗链)