发布于2026-05-22 阅读(0)
扫一扫,手机访问
当我们需要屏蔽某些恶意或不受欢迎的IP地址时,Nginx提供了非常直接且强大的解决方案。核心就是利用其内置的ngx_http_access_module模块。下面我们来看看具体怎么操作。

deny和allow指令这是最基础、最直观的方法,适合处理数量不多的黑名单IP。
编辑Nginx配置文件:首先,找到你的Nginx主配置文件,通常路径是/etc/nginx/nginx.conf,或者看看/etc/nginx/conf.d/目录下有没有独立的站点配置文件。
添加黑名单配置:在你想要生效的server或location块里,直接使用deny指令把“坏家伙”拒之门外,然后用allow all为其他所有IP放行。注意指令的顺序很重要,Nginx是按顺序匹配的。
server {
listen 80;
server_name example.com;
# 黑名单IP列表
deny 192.168.1.1;
deny 192.168.1.2;
deny 192.168.1.3;
# 允许所有其他IP
allow all;
location / {
root /var/www/html;
index index.html index.htm;
}
}
重新加载Nginx配置:改完保存后,别急着重启服务,一个重载命令就能让新配置生效,对服务影响最小。
sudo nginx -s reload
geo模块和map模块如果黑名单IP比较多,或者你想更灵活地管理,这个方法就优雅多了。它把IP列表定义和访问控制逻辑分离开,维护起来一目了然。
定义黑名单IP:在http块中,我们用geo指令创建一个变量(比如叫$blacklist)来标记黑名单IP。然后,再用map指令将这个标记变量映射为具体的控制动作。
http {
geo $blacklist {
default 0;
192.168.1.1 1;
192.168.1.2 1;
192.168.1.3 1;
}
map $blacklist $access_control {
1 "deny";
default "allow";
}
server {
listen 80;
server_name example.com;
location / {
if ($access_control = "deny") {
return 403 "Forbidden";
}
root /var/www/html;
index index.html index.htm;
}
}
}
这么做的妙处在于,以后要增删黑名单IP,只需要在geo块里操作,server块里的逻辑完全不用动。
重新加载Nginx配置:同样,修改完成后执行重载命令。
sudo nginx -s reload
sudo权限,确保你有相应的操作权限。总的来说,无论是简单的直接拒绝,还是使用geo模块进行集中管理,Nginx都能让你高效地构建起IP访问控制的第一道防线。根据你的实际场景和IP列表规模,选择最适合的方法即可。
上一篇:nginx配置日志切割怎么做
下一篇:CPUInfo 怎样显示缓存信息
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8