在Nginx中,如果你想要屏蔽某些IP地址,可以通过配置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;
    # 屏蔽特定IP地址
    deny 192.168.1.1;
    deny 192.168.1.2;
    # 允许所有其他IP地址
    allow all;
    location / {
        root /var/www/html;
        index index.html index.htm;
    }
}
重新加载Nginx配置: 保存配置文件并重新加载Nginx以应用更改。
sudo nginx -s reload
geo模块如果你有多个IP地址需要屏蔽,可以使用geo模块来简化配置。
编辑Nginx配置文件: 打开你的Nginx配置文件。
定义IP地址范围:
使用geo模块定义需要屏蔽的IP地址范围。
http {
    geo $block_ip {
        default 0;
        192.168.1.1 1;
        192.168.1.2 1;
    }
    server {
        listen 80;
        server_name example.com;
        # 屏蔽特定IP地址
        if ($block_ip) {
            return 403 "Forbidden";
        }
        location / {
            root /var/www/html;
            index index.html index.htm;
        }
    }
}
重新加载Nginx配置: 保存配置文件并重新加载Nginx以应用更改。
sudo nginx -s reload
fail2banfail2ban是一个更高级的工具,可以自动屏蔽恶意IP地址。
安装fail2ban:
在大多数Linux发行版上,可以使用包管理器安装fail2ban。
sudo apt-get install fail2ban  # Debian/Ubuntu
sudo yum install fail2ban      # CentOS/RHEL
配置fail2ban:
编辑fail2ban的配置文件,通常位于/etc/fail2ban/jail.local或/etc/fail2ban/jail.d/*.conf。
[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
[nginx-badbots]
enabled = true
filter = nginx-badbots
action = iptables-multiport[name=BadBots, port="http,https", protocol=tcp]
logpath = /var/log/nginx/access.log
创建过滤器:
创建一个过滤器文件来匹配恶意IP地址,通常位于/etc/fail2ban/filter.d/nginx-badbots.conf。
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*"
ignoreregex =
重启fail2ban:
保存配置文件并重启fail2ban以应用更改。
sudo systemctl restart fail2ban
通过以上方法,你可以有效地屏蔽Nginx日志中的特定IP地址。选择适合你需求的方法进行配置即可。