Nginx配置通过两种途径支持基本访问权限的控制,其中一种是由HTTP标准模块ngx_http_access_module支持的,其通过IP判断客户端是否拥有对Nginx的访问权限,这里有两个指令需要我们学习。
allow指令,用于设置允许访问Nginx的客户端IP,语法结构为:
allow address | CIDR | all;
address : 允许访问的客户端IP,不支持同时设置多个。如果有多个IP需要设置,需要重复使用allow指令。
CIDR : 允许访问的客户端的CIDR地址,例如202.80.18.23/25,前面是32位IP地址,后面“/25”代表该IP地址中前25位是网络部分,其余位代表主机部分。
all,代表允许所有客户端访问。
该命令也支持IPV6地址。。
另一指令是deny,作用刚好和allow指令相反,它用于设置禁止访问Nginx的客户端IP,语法结构为:
deny address | CIDR | all
这两个指令可以在http块,server块,或者location块中配置。
例子:
location /{
deny 192.168.1.1;
allow 192.168.1.0/24;
deny all;
}
在上面的配置实例中我们首先精致192.168.1.1访问nginx,然后允许192.168.1.0/24访问nginx,最后设置禁止所有IP访问nginx,那么192.168.1.0/24到底能不能访问呢?
答案是可以访问。Nginx配置在解析过程中,遇到deny或allow指令是按照顺序对当前客户端的连接进行访问权限检查的。如果遇到匹配的配置时,则停止继续向下搜索相关配置。