某些场景下,需要将一些IP或网段列入白名单,仅允许特定的人员访问,本文以Nginx为例配置IP白名单访问。
Nginx白名单使用allow和deny来控制,该配置可以添加在http段,也可以server、location中。
如果想增加允许访问的IP范围,例如10.10.10.0~10.10.10.255,需要使用CIDR格式表示你的IP范围,在Nginx中默认仅允许IP地址和CIDR格式,CIDR转IPv4网站:https://www.ipaddressguide.com/cidr
例一:
如果想对整个Nginx下所有网站设置IP访问白名单,可以配置在http段中,如:仅允许10.10.10.10的访问,其他所有IP均不能访问。
http { ...... allow 10.10.10.10; deny all; ...... }
|-------------|-----------------------------------------------------| | 1 2 3 4 5 6 | http { ...... allow 10.10.10.10; deny all; ...... } |
例二:
允许10.10.10.11和10.10.10.55访问blog.whsir.com域名,可直接在对应域名的server字段中配置,即
server { server_name blog.whsir.com; allow 10.10.10.11; allow 10.10.10.55; deny all; ...... }
|---------------|-----------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 | server { server_name blog.whsir.com; allow 10.10.10.11; allow 10.10.10.55; deny all; ...... } |
注:如果http字段和server字段同时配置了多个allow的IP,server字段中的allow也会生效,当然server字段中的allow仅对当前server域名生效。
例三:
仅允许10.10.10.0~10.10.10.255对某个URI地址进行访问,即
location /text/login { allow 10.10.10.0/24; deny all; }
|---------|---------------------------------------------------------| | 1 2 3 4 | location /text/login { allow 10.10.10.0/24; deny all; } |
修改配置文件后,仅需nginx -s reload命令即可,无需restart。
附: