详解Nginx如何封禁IP和IP段

 更新时间:2025年05月13日 08:19:35   作者:牛肉胡辣汤  
在Web服务器的日常管理中,有时需要对特定的IP地址或IP段进行访问限制,以保护网站的安全,下面我们就来聊聊如何使用Nginx封禁单个IP地址和IP段吧

在Web服务器的日常管理中,有时需要对特定的IP地址或IP段进行访问限制,以保护网站的安全。Nginx作为一个高性能的HTTP和反向代理服务器,提供了灵活的配置选项来实现这一需求。本文将详细介绍如何使用Nginx封禁单个IP地址和IP段。

1. 封禁单个IP地址

1.1 编辑Nginx配置文件

首先,需要编辑Nginx的配置文件。通常,这个文件位于​​/etc/nginx/nginx.conf​​或​​/etc/nginx/conf.d/​​目录下的某个文件中。你可以使用任何文本编辑器打开它,例如:

sudo nano /etc/nginx/nginx.conf

或者如果你有多个站点配置文件,可以在​​/etc/nginx/conf.d/​​目录下找到相应的​​.conf​​文件:

sudo nano /etc/nginx/conf.d/your-site.conf

1.2 添加封禁规则

在需要限制访问的server块或location块中添加以下配置:

server {
    listen 80;
    server_name yourdomain.com;
 
    location / {
        # 其他配置...
 
        # 封禁单个IP
        deny 192.168.1.100;
 
        # 允许所有其他IP
        allow all;
    }
}

1.3 保存并测试配置

保存文件后,使用以下命令检查Nginx配置是否正确:

sudo nginx -t

如果配置正确,重启Nginx使更改生效:

sudo systemctl restart nginx

2. 封禁IP段

2.1 编辑Nginx配置文件

同样,编辑Nginx的配置文件:

sudo nano /etc/nginx/nginx.conf

sudo nano /etc/nginx/conf.d/your-site.conf

2.2 添加封禁规则

在需要限制访问的server块或location块中添加以下配置:

server {
    listen 80;
    server_name yourdomain.com;
 
    location / {
        # 其他配置...
 
        # 封禁IP段
        deny 192.168.1.0/24;
 
        # 允许所有其他IP
        allow all;
    }
}

2.3 保存并测试配置

保存文件后,使用以下命令检查Nginx配置是否正确:

sudo nginx -t

如果配置正确,重启Nginx使更改生效:

sudo systemctl restart nginx

3. 使用Geo模块封禁多个IP段

对于需要封禁多个IP段的情况,可以使用Nginx的Geo模块来简化配置。

3.1 编辑Nginx配置文件

编辑Nginx的主配置文件​​/etc/nginx/nginx.conf​​,在http块中定义一个geo块:

http {
    geo $bad_ip {
        default 0;
        192.168.1.0/24 1;
        10.0.0.0/8 1;
    }
 
    server {
        listen 80;
        server_name yourdomain.com;
 
        location / {
            if ($bad_ip) {
                return 403;
            }
 
            # 其他配置...
        }
    }
}

3.2 保存并测试配置

保存文件后,使用以下命令检查Nginx配置是否正确:

sudo nginx -t

如果配置正确,重启Nginx使更改生效:

sudo systemctl restart nginx

通过上述步骤,你可以轻松地使用Nginx封禁单个IP地址或IP段。这些配置不仅有助于提高网站的安全性,还可以有效防止恶意攻击。Nginx 是一个高性能的 HTTP 和反向代理服务器,常用于网站的负载均衡、静态文件服务等场景。在某些情况下,你可能需要封禁特定的 IP 地址或 IP 段,以防止恶意访问或保护服务器资源。

4.方法补充

封禁单个 IP 地址

假设你需要封禁 IP 地址 ​​192.168.1.100​​,可以在 Nginx 配置文件中添加以下内容:

http {
    # 定义一个限制规则
    geo $bad_client {
        default 0;
        192.168.1.100 1;
    }
 
    server {
        listen 80;
        server_name example.com;
 
        location / {
            if ($bad_client) {
                return 403;
            }
            # 其他配置
        }
    }
}

封禁 IP 段

假设你需要封禁 IP 段 ​​192.168.1.0/24​​,可以在 Nginx 配置文件中添加以下内容:

http {
    # 定义一个限制规则
    geo $bad_client {
        default 0;
        192.168.1.0/24 1;
    }
 
    server {
        listen 80;
        server_name example.com;
 
        location / {
            if ($bad_client) {
                return 403;
            }
            # 其他配置
        }
    }
}

使用 ​​deny​​ 指令

除了使用 ​​geo​​ 模块,你还可以直接使用 ​​deny​​ 指令来封禁 IP 地址或 IP 段。例如:

1.封禁单个 IP 地址

server {
    listen 80;
    server_name example.com;
 
    location / {
        deny 192.168.1.100;
        allow all;
        # 其他配置
    }
}

2.封禁 IP 段

server {
    listen 80;
    server_name example.com;
 
    location / {
        deny 192.168.1.0/24;
        allow all;
        # 其他配置
    }
}

3.多个 IP 地址和 IP 段

如果你需要封禁多个 IP 地址或 IP 段,可以将它们列在一起:

server {
    listen 80;
    server_name example.com;
 
    location / {
        deny 192.168.1.100;
        deny 192.168.1.101;
        deny 192.168.1.0/24;
        allow all;
        # 其他配置
    }
}

重新加载 Nginx 配置

修改完配置文件后,需要重新加载 Nginx 以使更改生效。你可以使用以下命令:

sudo nginx -s reload

这样,Nginx 就会根据新的配置文件进行操作,封禁指定的 IP 地址或 IP 段。希望这些示例对你有帮助!如果有其他问题,请随时提问。在Nginx中,封禁特定的IP地址或IP段可以通过修改Nginx的配置文件来实现。这通常涉及到使用​​allow​​和​​deny​​指令来控制访问权限。以下是如何在Nginx中封禁单个IP地址和IP段的具体步骤和示例代码。

封禁单个IP地址

假设你想封禁IP地址 ​​192.168.1.100​​,你可以在Nginx的配置文件中添加如下内容:

http {
    # 其他配置...
 
    server {
        listen 80;
        server_name example.com;
 
        location / {
            # 允许所有IP访问
            allow all;
 
            # 封禁特定IP
            deny 192.168.1.100;
 
            # 其他配置...
        }
    }
}

封禁IP段

假设你想封禁IP段 ​​192.168.1.0/24​​,你可以在Nginx的配置文件中添加如下内容:

http {
    # 其他配置...
 
    server {
        listen 80;
        server_name example.com;
 
        location / {
            # 允许所有IP访问
            allow all;
 
            # 封禁特定IP段
            deny 192.168.1.0/24;
 
            # 其他配置...
        }
    }
}

允许特定IP或IP段访问

如果你只想允许特定的IP或IP段访问,可以使用​​allow​​指令来实现。例如,只允许 ​​192.168.1.100​​ 和 ​​192.168.1.0/24​​ 访问:

http {
    # 其他配置...
 
    server {
        listen 80;
        server_name example.com;
 
        location / {
            # 拒绝所有IP访问
            deny all;
 
            # 允许特定IP
            allow 192.168.1.100;
 
            # 允许特定IP段
            allow 192.168.1.0/24;
 
            # 其他配置...
        }
    }
}

保存并测试配置

在修改完Nginx配置文件后,需要保存文件并重新加载Nginx以使更改生效。你可以使用以下命令来测试配置文件的语法是否正确,并重新加载Nginx:

sudo nginx -t
sudo systemctl reload nginx

或者,如果你使用的是不同的系统管理工具,可以使用相应的命令来重新加载Nginx。

注意事项

顺序重要:​​allow​​和​​deny​​指令的顺序很重要。Nginx会按照它们出现的顺序进行匹配,一旦匹配到一个规则,就会停止进一步的检查。

测试影响:在生产环境中应用这些规则之前,建议先在一个测试环境中进行测试,以确保不会误封合法用户。

日志记录:如果需要记录被封禁的请求,可以在Nginx的日志配置中添加相应的记录。

到此这篇关于详解Nginx如何封禁IP和IP段的文章就介绍到这了,更多相关Nginx封禁IP和IP段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Nginx服务器中map模块的配置与使用

    详解Nginx服务器中map模块的配置与使用

    这篇文章主要介绍了Nginx服务器中map模块的配置与使用,文中同时给出了ngx_http_map_module模块的map命令用于制作服务器限速白名单的示例,需要的朋友可以参考下
    2016-01-01
  • Nginx的伪静态配置中使用rewrite来实现自动补全的实例

    Nginx的伪静态配置中使用rewrite来实现自动补全的实例

    这篇文章主要介绍了Nginx的伪静态配置中使用rewrite来实现自动补全的实例,文中对rewrite的相关参数和正则表达使用也做了介绍,需要的朋友可以参考下
    2015-12-12
  • Nginx安装后添加ssl模块方式实践

    Nginx安装后添加ssl模块方式实践

    文章介绍了nginx编译安装和添加ssl模块的过程,强调了备份配置文件的重要性,并提示不要直接make install,而是先卸载旧版本再安装新版本
    2026-04-04
  • 一次nginx 504 Gateway Time-out错误排查、解决记录

    一次nginx 504 Gateway Time-out错误排查、解决记录

    这篇文章主要介绍了一次nginx 504 Gateway Time-out错误排查、解决记录,经过反复检查,发现造成这个问题的原因就是PHP的CURL没有设置超时时间,解决办法只要设置超时时间或者修改一下nginx的配置即可解决,需要的朋友可以参考下
    2014-05-05
  • Nginx暴露出请求的真实IP的问题

    Nginx暴露出请求的真实IP的问题

    在工作中,经常会用用户实际请求的IP地址,本文主要介绍了Nginx暴露出请求的真实IP的问题,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • nginx+iis实现简单的负载均衡

    nginx+iis实现简单的负载均衡

    这篇文章主要为大家详细介绍了nginx+iis实现一个简单的负载均衡的方法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • nginx location匹配实例详解

    nginx location匹配实例详解

    这篇文章主要介绍了nginx location匹配实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • centos7编译安装nginx的方法步骤

    centos7编译安装nginx的方法步骤

    这篇文章主要介绍了centos7编译安装nginx的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Nginx搭建图片视频服务器的部署步骤

    Nginx搭建图片视频服务器的部署步骤

    这篇文章主要介绍了Nginx搭建图片视频服务器的部署步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 利用nginx搭建RTMP视频点播、直播、HLS服务器

    利用nginx搭建RTMP视频点播、直播、HLS服务器

    本文主要介绍了利用nginx搭建RTMP视频点播、直播、HLS服务器,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论