在Nginx中实现基于IP的访问控制(IP黑白名单)的具体步骤

 更新时间:2025年05月12日 10:36:38   作者:java1234_小锋  
在 NGINX 中实现基于 IP 地址的访问控制(IP 黑白名单)是一种常见的安全策略,可以通过 allow 和 deny 指令来实现,下面是如何配置黑白名单的步骤,感兴趣的小伙伴跟着小编一起来看看吧

1. 配置白名单(允许特定 IP 访问)

要允许特定 IP 地址或 IP 范围访问网站,你可以使用 allow 指令。假设我们要允许 192.168.1.100 这个 IP 地址访问 NGINX 服务:

编辑你的 NGINX 配置文件(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default):

server {
    listen 80;
    server_name yourdomain.com;
 
    location / {
        # 允许特定 IP 访问
        allow 192.168.1.100;
 
        # 其余的 IP 被拒绝访问
        deny all;
 
        # 配置其他参数
    }
}

2. 配置黑名单(拒绝特定 IP 访问)

要拒绝特定 IP 地址访问,你可以使用 deny 指令。假设我们要阻止 192.168.1.101 这个 IP 地址访问:

server {
    listen 80;
    server_name yourdomain.com;
 
    location / {
        # 拒绝特定 IP 访问
        deny 192.168.1.101;
 
        # 允许其他 IP 访问
        allow all;
 
        # 配置其他参数
    }
}

3. 配置多个 IP 的黑白名单

你可以同时使用多个 allow 和 deny 指令,来配置多个 IP 地址或 IP 范围的访问控制。例如:

server {
    listen 80;
    server_name yourdomain.com;
 
    location / {
        # 允许多个 IP 访问
        allow 192.168.1.100;
        allow 203.0.113.0/24;  # 允许整个 IP 范围
 
        # 拒绝多个 IP 访问
        deny 192.168.1.101;
        deny 198.51.100.200;
 
        # 配置其他参数
    }
}

4. 结合黑白名单进行更细粒度的控制

如果你有一个更复杂的需求(例如,只有某些 IP 可以访问某些特定路径),可以为不同的 location 配置不同的访问控制。例如:

server {
    listen 80;
    server_name yourdomain.com;
 
    # 默认配置,允许所有人访问
    location / {
        allow all;
        deny all;
    }
 
    # 特定路径的访问控制
    location /admin {
        # 只允许 192.168.1.100 和 203.0.113.0/24 访问 /admin 路径
        allow 192.168.1.100;
        allow 203.0.113.0/24;
        deny all;  # 其余 IP 拒绝访问
    }
}

5. 使用 geo 模块进行更灵活的控制(可选)

你还可以使用 NGINX 的 geo 模块来基于客户端的 IP 地址进行更加灵活的访问控制。这个方法允许你创建一个变量,该变量基于 IP 地址的来源来设置不同的权限。

例如,创建一个 geo 模块来根据 IP 地址定义访问权限:

http {
    geo $restricted {
        default 1;
        192.168.1.100 0;  # 允许 192.168.1.100
        203.0.113.0/24 0;  # 允许 203.0.113.0/24 网段
    }
 
    server {
        listen 80;
        server_name yourdomain.com;
 
        location / {
            if ($restricted) {
                deny all;  # 如果 $restricted 变量为 1,拒绝访问
            }
 
            allow all;  # 允许其他 IP 访问
        }
    }
}

6. 重载 NGINX 配置

完成配置后,记得验证配置并重载 NGINX 服务:

sudo nginx -t  # 测试配置是否正确
sudo systemctl reload nginx  # 重新加载 NGINX 配置

7. 常见的配置应用场景

  • 白名单:当你只希望某些 IP 地址可以访问你的服务,而其他的都被拒绝。
  • 黑名单:当你希望阻止某些特定的 IP 地址,允许其他的访问。
  • 组合使用:当你需要更细粒度的控制,允许或拒绝某些 IP 地址访问特定路径时。

总结

通过在 NGINX 中使用 allow 和 deny 指令,你可以非常方便地实现 IP 地址的黑白名单控制,保护你的服务器免受不必要的访问。

到此这篇关于在Nginx中实现基于IP的访问控制(IP黑白名单)的具体步骤的文章就介绍到这了,更多相关Nginx IP访问控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx 日志分析可视化面板详解

    Nginx 日志分析可视化面板详解

    这段文章详细介绍了网站性能监控与分析的板的设计,涵盖了流量概览、上游服务监控、TOPN访问排行等多个模块,通过全局变量和时间粒度的设置,实现多业务数据的隔离与精准监控,感兴趣的朋友跟随小编一起看看吧
    2026-06-06
  • 网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法

    网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法

    502 bad gateway nginx/1.20.1 是一个错误提示,通常出现在访问网站时出现问题,这篇文章主要给大家介绍了关于网页502 Bad Gateway nginx/1.20.1报错的原因与解决方法,需要的朋友可以参考下
    2024-03-03
  • Nginx设置成服务并开机自动启动的配置

    Nginx设置成服务并开机自动启动的配置

    Nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,接下来通过本文给大家介绍Nginx设置成服务并开机自动启动的配置,需要的朋友可以参考下
    2022-01-01
  • Nginx解决history模式下页面刷新404问题示例

    Nginx解决history模式下页面刷新404问题示例

    这篇文章主要为大家介绍了Nginx解决history模式下页面刷新404问题示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 高性能软件负载OpenResty介绍和安装使用详解

    高性能软件负载OpenResty介绍和安装使用详解

    OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项,这篇文章主要介绍了高性能软件负载OpenResty介绍和安装,需要的朋友可以参考下
    2023-12-12
  • 使用Nginx来共享文件的详细教程

    使用Nginx来共享文件的详细教程

    有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用 nginx 来实现这个需求,本文将通过代码示例一步步教你使用Nginx来共享文件,需要的朋友可以参考下
    2025-01-01
  • 详解nginx惊群问题的解决方式

    详解nginx惊群问题的解决方式

    这篇文章主要介绍了详解nginx惊群问题的解决方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Nginx日志分割实战

    Nginx日志分割实战

    Nginx默认没有提供对日志文件的分割功能,本文主要介绍了Nginx日志分割实战,分割Nginx日志的方法有很多,这里推荐利用Logrotate来完成,感兴趣的可以了解一下
    2024-03-03
  • Nginx服务器中浏览器本地缓存和虚拟机的相关设置

    Nginx服务器中浏览器本地缓存和虚拟机的相关设置

    这篇文章主要介绍了Nginx服务器中浏览器本地缓存和虚拟机的相关设置,是Nginx服务器搭建过程中的基本配置,需要的朋友可以参考下
    2015-08-08
  • CentOS 7.0下nginx实现每天定时分割日志

    CentOS 7.0下nginx实现每天定时分割日志

    大家都知道Nginx产生的日志都是存在一个文件,随着网站运行时间越长,日志文件的大小也在不断增长,所以这个时候就需要实现定时分割,这篇文章主要介绍了在CentOS 7.0下nginx实现每天定时分割日志的相关资料,需要的朋友可以参考下。
    2017-04-04

最新评论