这部分配置需要和不记录日志和过期时间结合在一起,因为都用到了“location”
location~*^.+.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)${expires7d;valid_referersnoneblockedserver_names*.test.com;//定义一个白名单if($invalid_referer){//如果不是白名单里的return403;//返回403}access_logoff;}
~*表示不区分大小写
[root@aminglinux-02~]#curl-e"http://www.baidu.com/1.html"-x127.0.0.1:80test.com/1.gif-ihttp/1.1403forbiddenserver:nginx/1.12.1date:mon,14aug201715:34:55gmtcontent-type:text/htmlcontent-length:169connection:keep-alive[root@aminglinux-02~]#curl-e"http://www.test.com/1.html"-x127.0.0.1:80test.com/1.gif-ihttp/1.1200okserver:nginx/1.12.1date:mon,14aug201715:35:20gmtcontent-type:image/gifcontent-length:66last-modified:fri,11aug201717:51:27gmtconnection:keep-aliveetag:"598dee9f-42"expires:mon,21aug201715:35:20gmtcache-control:max-age=604800accept-ranges:bytes
使用www.baidu.com的referer访问,是403;更换为www.test.com,访问就200,便是防盗链设置成功
location/admin/{allow192.168.133.1;//白名单allow127.0.0.1;//白名单denyall;//全部deny}
执行顺序,是逐行匹配;匹配成功第一条,将不继续进行之后的匹配
[root@aminglinux-02~]#curl-x127.0.0.1:80test.com/admin/1.php-ihttp/1.1200okserver:nginx/1.12.1date:mon,14aug201715:54:51gmtcontent-type:application/octet-streamcontent-length:11last-modified:mon,14aug201715:54:48gmtconnection:keep-aliveetag:"5991c7c8-b"accept-ranges:bytes[root@aminglinux-02~]#curl-x127.0.0.2:80test.com/admin/1.php-ihttp/1.1200okserver:nginx/1.12.1date:mon,14aug201715:54:57gmtcontent-type:application/octet-streamcontent-length:11last-modified:mon,14aug201715:54:48gmtconnection:keep-aliveetag:"5991c7c8-b"accept-ranges:bytes[root@aminglinux-02~]#cat/tmp/test.com.log127.0.0.1-[12/aug/2017:01:48:01+0800]test.com"/"200"-""curl/7.29.0"127.0.0.1-[12/aug/2017:01:50:13+0800]test.com"/2.jsfsdfe"404"-""curl/7.29.0"127.0.0.1-[14/aug/2017:23:47:09+0800]test.com"/admin"301"-""curl/7.29.0"127.0.0.1-[14/aug/2017:23:51:10+0800]test.com"/admin"301"-""curl/7.29.0"127.0.0.1-[14/aug/2017:23:51:26+0800]test.com"/admin"301"-""curl/7.29.0"127.0.0.1-[14/aug/2017:23:52:59+0800]test.com"/admin"301"-""curl/7.29.0"127.0.0.1-[14/aug/2017:23:53:08+0800]test.com"/admin/1.php"404"-""curl/7.29.0"127.0.0.1-[14/aug/2017:23:54:51+0800]test.com"/admin/1.php"200"-""curl/7.29.0"127.0.0.1-[14/aug/2017:23:54:57+0800]test.com"/admin/1.php"200"-""curl/7.29.0"
因为跳转的地址都127.0.0.1,所以访问是正常的
为了准确测试,对ens34网卡新增一个ip使用这个ip访问,查看curl情况
[root@aminglinux-02~]#dhclientens34[root@aminglinux-02~]#ifconfigens32:flags=4163
证明配置成功,非第一和第二条的ip访问,无法打开
location~.*(upload|image)/.*.php${denyall;}
为了方便测试,创建所需文件和目录
[root@aminglinux-02~]#mkdir/data/wwwroot/test.com/upload[root@aminglinux-02~]#cd!$cd/data/wwwroot/test.com/upload[root@aminglinux-02upload]#vim1.php[root@aminglinux-02upload]#vim1.jpg[root@aminglinux-02test.com]#curl-x127.0.0.1:80test.com/upload/1.php