简单来说,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中包含以上关键字的,将会拒绝