一、ngx_http_access_module模块简介
ngx_http_access_module模块,可实现基于ip的访问控制功能,用于限制对某些客户端地址的访问,其功能类似于路由器上的基础acl。ngx_http_access_module模块为默认安装模块,只有allow和deny两个命令,allow表示运行指定IP地址访问,deny表示拒绝指定IP地址访问资源。配置规则说明如下:
- allow表示允许指定IP访问
- deny表示拒绝访问
- allow或者deny后面可以接IP也可以是IP地址段,格式示例192.168.0.0/24
- 匹配规则为从上到下逐一匹配
- 没有默认规则,如果是白名单制,需要在最后加上deny all;
- 地址黑名单和白名单可以配置在server模块内,也可以配置在指定资源路径下;
二、配置示例
[root@s141 conf.d]# cat iptest.conf
server {
listen 8888; #listen、server_name这些正常配置
server_name 192.168.0.141;
access_log /var/log/nginx/test.access.log;
allow 192.168.0.141; #允许192.168.0.141地址访问
deny 192.168.0.0/24; #拒绝192.168.0.0/24网段访问
allow 172.16.7.6;
deny all; #添加默认策略,拒绝所有未配置地址的访问
location / {
proxy_pass http://192.168.0.141:8080; ##路径1反向代理地址
}
location /two {
proxy_pass http://192.168.0.141:8080/two; ##路径2
}
}
三、测试验证
1、使用172.16.7.6终端访问服务器
2、使用被拒绝地址192.168.0.142访问服务器
3、修改IP地址清单策略
修改IP地址黑白名单策略为允许主机142地址访问页面1,主机141地址可以访问页面2,其他禁止。
[root@s141 conf.d]# cat iptest.conf
server {
listen 8888; #listen、server_name这些正常配置
server_name 192.168.0.141;
access_log /var/log/nginx/test.access.log;
#allow 192.168.0.141; #允许192.168.0.141地址访问
#deny 192.168.0.0/24; #拒绝192.168.0.0/24网段访问
#allow 172.16.7.6;
#deny all; #添加默认策略,拒绝所有未配置地址的访问
location / {
allow 192.168.0.142;
deny all;
proxy_pass http://192.168.0.141:8080; ##路径1反向代理地址
}
location /two {
allow 192.168.0.141;
deny all;
proxy_pass http://192.168.0.141:8080/two; ##路径2
}
}
4、使用主机142访问页面1和页面2
5、使用主机141访问页面1和页面2
6、其他主机访问页面1和2均拒绝