deny

deny指令的作用和allow指令相反,它用于设置禁止访问Nginx的客户端IP,语法结构为:

deny address | CIDR | all;
  • address:禁止访问的客户端的IP,不支持同时设置多个。如果有多个IP需要设置,需要重复使用deny指令。

  • CIDR:禁止访问的客户端的CIDR地址,例如202.80.18.23/25,前面是32位IP地址,后面“/25”代表该IP地址中前25位是网络部分,其余位代表主机部分。

  • 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,最后又使用all配置禁止所有IP的访问。那么,192.168.1.0/24客户端到底可不可以访问呢?

是可以的。Nginx配置在解析的过程中,遇到deny指令或者allow指令是按照顺序对当前客户端的连接进行访问权限检查的。如果遇到匹配的配置时,则停止继续向下搜索相关配置。因此,当192.168.1.0/24客户端访问时,Nginx在第3行解析配置发现允许该客户端访问,就不会继续向下解析第4行了。

Last updated