linux

nginx日志中的IP地址怎么屏蔽

小樊
51
2025-06-01 22:42:15
栏目: 编程语言

在Nginx中,如果你想要屏蔽某些IP地址,可以通过配置ngx_http_access_module模块来实现。以下是一些常见的方法:

方法一:使用denyallow指令

  1. 编辑Nginx配置文件: 打开你的Nginx配置文件,通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/your-site

  2. 添加访问控制规则: 在serverlocation块中添加denyallow指令来控制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;
        }
    }
    
  3. 重新加载Nginx配置: 保存配置文件并重新加载Nginx以应用更改。

    sudo nginx -s reload
    

方法二:使用geo模块

如果你有多个IP地址需要屏蔽,可以使用geo模块来简化配置。

  1. 编辑Nginx配置文件: 打开你的Nginx配置文件。

  2. 定义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;
            }
        }
    }
    
  3. 重新加载Nginx配置: 保存配置文件并重新加载Nginx以应用更改。

    sudo nginx -s reload
    

方法三:使用fail2ban

fail2ban是一个更高级的工具,可以自动屏蔽恶意IP地址。

  1. 安装fail2ban: 在大多数Linux发行版上,可以使用包管理器安装fail2ban

    sudo apt-get install fail2ban  # Debian/Ubuntu
    sudo yum install fail2ban      # CentOS/RHEL
    
  2. 配置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
    
  3. 创建过滤器: 创建一个过滤器文件来匹配恶意IP地址,通常位于/etc/fail2ban/filter.d/nginx-badbots.conf

    [Definition]
    failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*"
    ignoreregex =
    
  4. 重启fail2ban: 保存配置文件并重启fail2ban以应用更改。

    sudo systemctl restart fail2ban
    

通过以上方法,你可以有效地屏蔽Nginx日志中的特定IP地址。选择适合你需求的方法进行配置即可。

0
看了该问题的人还看了