在Nginx中,如果你想要屏蔽某些IP地址,可以通过配置Nginx的ngx_http_access_module模块来实现。以下是一些常见的方法:
deny和allow指令编辑Nginx配置文件:
打开你的Nginx配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/your-site。
添加访问控制规则:
在server或location块中添加deny和allow指令来屏蔽特定的IP地址。
server {
listen 80;
server_name example.com;
location / {
deny 192.168.1.1; # 屏蔽IP地址192.168.1.1
allow all; # 允许所有其他IP地址
root /var/www/html;
index index.html index.htm;
}
}
geo模块如果你有多个IP地址需要屏蔽,可以使用geo模块来简化配置。
编辑Nginx配置文件: 打开你的Nginx配置文件。
定义geo块:
在http块中定义一个geo块来列出需要屏蔽的IP地址。
http {
geo $block_ip {
default 0;
192.168.1.1 1; # 屏蔽IP地址192.168.1.1
192.168.1.2 1; # 屏蔽IP地址192.168.1.2
}
server {
listen 80;
server_name example.com;
location / {
if ($block_ip) {
return 403; # 返回403 Forbidden
}
root /var/www/html;
index index.html index.htm;
}
}
}
fail2banfail2ban是一个更高级的工具,可以自动屏蔽恶意IP地址。
安装fail2ban:
sudo apt-get install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # CentOS/RHEL
配置fail2ban:
编辑/etc/fail2ban/jail.local文件,添加你的Nginx配置。
[nginx]
enabled = true
filter = nginx-auth
action = iptables-multiport[name=SSH, port="http,https", protocol=tcp]
logpath = /var/log/nginx/access.log
bantime = 600
findtime = 600
maxretry = 3
创建过滤器:
编辑/etc/fail2ban/filter.d/nginx-auth.conf文件,定义过滤规则。
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 403
ignoreregex =
重启fail2ban:
sudo systemctl restart fail2ban
通过以上方法,你可以有效地屏蔽Nginx日志中的特定IP地址。选择适合你需求的方法进行配置即可。