Nginx的四层代理stream模块限制白名单配置方案

目录

一. 核心配置步骤

二. 进阶配置与管理

三. 重要注意事项

四. Stream 模块和 HTTP 模块的主要区别


通过Nginx的stream模块限制白名单,可以有效控制哪些IP地址能够通过你配置的代理服务(如TCP/UDP)连接到后端服务器,这常用于数据库访问代理或内部服务暴露等场景,是重要的安全措施。

一. 核心配置步骤

实现白名单控制,主要依赖 ngx_stream_access_module模块的 allowdeny指令。

  1. 确认Nginx包含Stream模块

    Nginx的stream模块默认可能未启用。请使用 nginx -V命令检查输出中是否包含 --with-stream参数。如果没有,你需要重新编译Nginx并加入此参数。

  2. 配置语法与逻辑

    • allow: 允许指定的IP或网段访问。

    • deny: 拒绝指定的IP或网段访问。

    • 配置逻辑:规则是按顺序匹配的。一个常见的模式是 allow 可信IP; deny all;,这表示“只允许白名单内的IP,拒绝其他所有连接”。

  3. 编辑配置文件

    nginx.confhttp配置块之外,与它平级地添加stream块。一个基础的白名单配置示例如下:

    stream {
        # 定义白名单规则,允许特定IP和网段
        allow   188.188.1.188;
        allow   10.0.0.0/24;
        deny    all; # 拒绝所有非白名单IP
    
        server {
            listen     3306; # 代理服务监听端口
            proxy_pass backend_mysql:3306; # 后端服务器地址
        }
    }

    在这个例子中,只有IP 188.188.1.18810.0.0.0/24网段的客户端能够通过本机的3306端口连接到后端MySQL服务。

二. 进阶配置与管理

当你熟悉基本用法后,可以考虑以下进阶操作来优化配置。

  • 精细化权限控制:你可以在不同的server块内设置独立的访问规则,实现端口级别的权限控制。

    stream {
        # 针对端口65000的服务设置白名单
        server {
            listen 65000;
            allow   192.168.33.200;
            allow   192.168.33.5;
            deny    all;
            proxy_pass 192.168.33.100:65000;
        }
    
        # 针对SSH服务(端口22)设置不同的白名单
        server {
            listen 65222;
            allow   10.10.14.0/24;
            deny    all;
            proxy_pass 192.168.33.100:22;
        }
    }
  • 使用外部白名单文件:为了方便管理大量IP,可以将白名单列表写入单独的文件(如 white_80ip.conf),然后在主配置文件中用 include指令引入。

    # 在stream块或server块内
    include /etc/nginx/white_ip.conf;

    white_ip.conf文件内容示例:

    allow 192.168.33.101;
    allow 192.168.33.102;
  • 动态更新白名单:如果需要频繁变更白名单,可以编写简单的Shell脚本自动完成IP的添加、删除,并重载Nginx配置使其生效。

三. 重要注意事项

  • 规则顺序至关重要:Nginx遇到第一个匹配的allowdeny指令就会停止继续匹配。因此,应将更具体的规则放在前面

  • 模块可用性:确保你的Nginx在编译时包含了 --with-stream--with-stream_access_module模块。

  • 配置完要重载:修改并保存配置文件后,先使用nginx -t检查语法,然后使用 nginx -s reload命令让配置生效,避免重启服务。

四. Stream 模块和 HTTP 模块的主要区别

特性

Stream 模块 (四层代理)

HTTP 模块 (七层代理)

工作层级

传输层 (TCP/UDP)

应用层 (HTTP/HTTPS)

处理内容

IP 地址、端口、原始数据流

HTTP 方法、URL、请求头、Cookie 等

解析能力

不解析应用协议

深度解析和修改 HTTP 协议

性能开销

相对较低

相对较高

典型场景

数据库、邮件、DNS、自定义TCP/UDP服务代理

网站服务器、API 网关、反向代理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值