某些场景下,需要将一些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;
......
}
例二:
允许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;
......
}
注:如果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;
}
修改配置文件后,仅需nginx -s reload命令即可,无需restart。
附:
Nginx根据用户IP设置访问跳转
Nginx通过geo模块设置白名单link