logo头像
Snippet 博客主题

Nginx设置黑白名单

在日常运维工作中,会碰到这样的需求,对于一些http请求只对某些ip开发,其他的ip的客户端都不能访问。

在测试之前我列一下本次测试的终端IP。

宿主机Deepin Linux : 192.168.1.106

虚拟机Windows 10 : 192.168.1.107

移动Android终端机 MIUI10: 192.168.1.100

Nginx是在Deepin部署的,现在我们启动Nginx

1
2
cd /usr/local/nginx/sbin
./nginx

1启动后,在宿主机随便访问一个请求(这里是我之前文章配置的静态图片资源的转发),比如http://127.0.0.1或http://192.168.1.106

图片列表

此外,我们用Android手机和Windows 10虚拟机同样访问http://192.168.1.106也能访问到,手机和宿主机是同一个路由器,而虚拟机网络是桥接模式。所以是在同一局域网都能够互通。

Android显示效果

Windows 10 虚拟机效果显示

我们让手机无法访问,让虚拟机可以通过。

利用allow、deny参数进行访问限制

  1. 更改nginx.conf。

    location / {

    deny 192.168.1.100;  #禁止IP为192.168.1.100访问
    allow all; # 除过上述黑名单的限制外,允许其他IP访问
    autoindex on;             #开启索引功能  
    autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)  
    autoindex_localtime on;   # 显示本机时间而非 GMT 时间  
    

    }

  2. 重新加载配置。

    1
    sudo ./nginx -s reload
  3. 黑名单限制效果。

Android限制访问效果

支付宝打赏 微信打赏

请作者喝杯咖啡吧