如何使用 Nginx 精准禁止特定 IP 访问?(IP 访问控制实操指南,安全配置必备技巧!)

在维护网站安全性时,有时候我们需要阻止恶意 IP 地址对服务器的访问。Nginx 提供了强大的机制来实现这一点。下面介绍如何在 Nginx 中精准禁止特定 IP 的访问。

方法 1: 使用 deny 和 allow 指令

最直接的方式是在 Nginx 配置文件中添加deny和allow指令来限制或允许指定 IP 的访问。假设你需要阻止 IP 地址为 123.45.67.89 的访问:

  1. 打开 Nginx 的配置文件,通常是 /etc/nginx/nginx.conf 或特定站点的配置文件。
  2. 在想要应用规则的位置(比如 server 或 location 区块)添加以下配置:
    location / {
        deny 123.45.67.89;     # 禁止特定 IP 的访问
        
        # 其他配置...
    }
    

    如果你只想允许特定的 IP 访问,同时拒绝所有其他来源的访问,可以这样设置:

    location / {
        deny all;             # 默认拒绝所有人
        allow 123.45.67.89;   # 只允许特定 IP 访问
        
        # 其他配置...
    }
    

    注意,allow 和 deny 的顺序很重要;最后一条规则具有最高的优先级。

方法 2: 使用 GeoIP 模块

GeoIP 模块可以让 Nginx 根据 IP 地址判断地理位置,进而实施地理区域的访问控制。然而,基本的 Nginx 分发版并不自带此模块,你需要自行下载安装 GeoIP 数据库和相关模块。

  1. 下载 GeoLite2-Country 数据库:
    wget https://download.maxmind.com/app/geoip_download -O geoip.tar.gz
    tar xzf geoip.tar.gz
    
  2. 将数据库文件移动到适当目录:
    mv GeoLite2-Country.mmdb /usr/share/GeoIP/
    
  3. 更新 Nginx 配置文件,添加以下内容:
    geoip_country /usr/share/GeoIP/GeoLite2-Country.mmdb;
    
    server {
        if ($geoip_country_code != "CN") {  # 举例,只允许中国IP访问
            return 403;
        }
    
        # 其他配置...
    }
    

    请注意,GeoIP 模块需要在全局层级进行声明,才能在整个 Nginx 中可用。

方法 3: 使用 IPset (适用于大量 IP)

如果需要批量处理大量的 IP 地址或者 IP 段,可以使用 Linux 内建的 IPset 工具。创建 IPset,然后在 Nginx 中引用这个 set。

  1. 创建 IPset:
    ipset create bad_ips hash:net family inet hashsize 1024 maxelem 65536
    ipset add 123.45.67.89 bad_ips
    
  2. 在 Nginx 配置文件中添加引用:
    map $remote_addr $limit_req {
        default 0;
        set $limit_req 1;
        if ($binary_remote_addr in bad_ips) {
            set $limit_req 0;
        }
    }
    
    location / {
        if ($limit_req = 0) {
            return 403;
        }
        
        # 其他配置...
    }
    

以上就是如何在 Nginx 中精确控制特定 IP 或 IP 段访问的方法。根据不同的场景,选择合适的技术点来增强你的服务器安全性。不过,始终记得定期检查和更新黑名单列表,以应对不断变化的安全威胁。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 qiqicto@qq.com 举报,一经查实,本站将立刻删除。
赞 (0)
赵其鑫的头像赵其鑫管理团队

相关推荐

返回顶部