简单来说,nginx的访问控制其实就是一些匹配规则配合allow/deny address | unix: | CIDR | all
address IP地址
CIDR IP段
unix: socker地址
all 全部
server{
...
...
allow 127.0.0.1;
deny all;
}
上述配置表示,只有127.0.0.1可以进行访问,其他的全部拒绝
location
location ~ ".html|\.ht" {
deny all;
}
对于匹配规则中的第一个”.html”来说,符号”.”代表的是任意字符,而后面的”.ht”中的符号”.”之前加了转义符,才是真正的符号”.”,所以上述规则对于链接中或后面含有html的请求,或者带有”.ht”的链接,都会拒绝访问
$document_uri
$document_uri,其实大体上跟location规则一致,只是写法不同,对于上述规则来说,写法如下
if($document_uri的控制 ~ ".html|\.ht") {
deny all;
}
$request_uri
基于$request_uri的控制,$request_uri包含参数,所以多用于参数的匹配规则
location ~ "gid=\d{4,9}" {
deny all;
}
如果gid后面得参数是数字且长度在4到9之间,就会拒绝访问
$http_user_agent
对于一些异常的访问,我们可以通过user_agent来发现他的规律,并拒绝
if ($user_agent ~ 'YisouSpider|MJ12bot/v1.4.2|YoudaoBot|Tomato')
{
deny all;
}
对于user_agent中包含以上关键字的,将会拒绝