location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
#匹配不区分大小写
{
#过期时间
expires 7d;
valid_referers none blocked server_names *.test.com ;
#白名单
if ($invalid_referer)
{
return 403;
}
}
#//不记录日志
access_log off;
}测试
首先先验证下是否写对
## /usr/local/nginx/sbin/nginx -t
然后重新加载
# /usr/local/nginx/sbin/nginx -s reload
# curl -x127.0.0.1:80 -I -e "http://aa.com/1.php" test.com/1.png

# curl -x127.0.0.1:80 -I -e "http://test.com/1.php" test.com/1.png

Nginx访问控制
需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下
location /admin/
{
allow 192.168.5.16;
allow 127.0.0.1;
deny all;
}在配置httpd的时候,还有一个order,来定义先allow还是先deny,在nginx里并没有,只要匹配规则就结束,他会从上往下匹配没直接匹配到规则的时候才会结束
# mkdir -p /data/wwwroot/test.com/admin/
# echo “test,test”>/data/wwwroot/test.com/admin/1.html
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload
# curl -x127.0.0.1:80 test.com/admin/1.html -I

也可以配置成允许一个ip段,写法allow 192.168.5.0/24,如果只是禁止掉几个ip的话,就直接deny 192.168.4.1;禁止掉
也可以写成正则来限制,一般限制一些图片上传目录禁止,如下
可以匹配正则
location ~ .*(upa|image)/.*\.php$
{
deny all;
}小括号里面的竖线为分隔符,他们之间是“或者”的意思,这样就可以吧访问的url中带有upa或者image的字符串,并且把php请求拒绝访问,,禁止php是为了保证图片上传目录不被黑
也可以针对,user_agent做些限制,配置如下
if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')
{
return 403;
}
# 如果不缺分大小写则为
if ($http_user_agent ~* 'Spider/3.0|YoudaoBot|Tomato')
{
return 403;
}其中~为匹配符号,只要user_agent中含有上面几个,都会直接被拒绝,直接返回403代码
#测试地址# curl -A "Tomato" -x127.0.0.1:80 test.com


