NSM 是一款高效、可靠的 Shell 脚本工具,专注于简化 Linux 环境下 Nginx Stream 模块(四层代理)的配置与管理,实现高性能的 TCP / UDP 端口转发以及基于 SNI 的智能代理。
🚀 核心功能
- 端口转发:轻松设置 TCP 和 UDP 端口转发到目标 IP 和端口
- SSL 预读(SNI 路由):利用 Nginx 的 ssl_preread 功能,根据客户端请求的域名自动路由到不同后端服务器,解决单端口多服务问题
- 配置管理:自动添加、修改和删除 Stream 代理规则
- 服务控制:一键重启 / 重载 Nginx 服务以应用配置
- 环境自检:自动检测并安装 Stream 模块,清理潜在配置冲突
📋 兼容性要求
- 操作系统:Debian 10+、Ubuntu 18.04+、CentOS 7+
- 权限:必须以 root 用户或具有 sudo 权限的用户运行
- 核心组件:curl、nginx、sudo(部署脚本会自动处理)
🚨 部署风险和兼容性警示(重要必读)
现有 Nginx 配置将被清除:
部署脚本在安装过程中,可能会执行 sudo apt purge -y nginx* 等命令, 这意味着系统中已存在的 Nginx 软件包及 /etc/nginx/ 目录下的所有配置文件都将被彻底移除。
⚠ 如果您正在生产环境运行 Nginx,请务必提前备份配置文件!
Stream 模块兼容性说明:
脚本支持 Debian / Ubuntu 官方源和 Nginx 官方源。 如果您的 Nginx 是通过源码编译或非标准方式安装,建议在新环境中部署。
🛠️ 一键部署(推荐)
我们推荐使用一键部署脚本,它将自动安装所有依赖(包括 Nginx Stream 模块),并配置 nsm 命令。
步骤 1:部署并安装
sudo curl -fsSL https://raw.githubusercontent.com/pansir0290/nginx-stream-manager/main/deploy.sh | bash 🛑 请完整复制以上命令,避免因粘贴不完整导致安装失败。
步骤 2:激活 nsm 命令
source ~/.bashrc 如果您使用的是 root 用户,请执行:
source /root/.bashrc 💡 手动安装依赖(可选)
Debian / Ubuntu:
sudo apt update sudo apt install -y curl vim sudo nginx net-tools iproute2 libnginx-mod-stream CentOS / RHEL / Fedora:
sudo yum install -y curl vim sudo nginx net-tools iproute2 或:
sudo dnf install -y curl vim sudo nginx net-tools iproute2 🖥️ 使用方法
部署完成后,在终端中输入以下命令启动管理工具:
nsm 主菜单选项说明
| 选项 | 功能描述 |
|---|---|
| 1 | 添加或修改代理规则(支持 TCP / UDP / SSL 预读) |
| 2 | 删除现有代理规则 |
| 3 | 重启 / 重载 Nginx 服务 |
| 4 | 系统状态检查 |
| 0 | 退出 NSM |
⭐ 关键特性说明:SSL 预读(SNI)
启用 SSL 预读后,Nginx 可以在不终止 SSL 的情况下读取客户端的 SNI 域名,从而实现:
- 单端口多 HTTPS 服务(例如 443 端口多域名)
- 真正的四层代理,证书和加解密仍由后端服务器完成
🧩 配置路径说明
- 主规则文件:/etc/nginx/conf.d/nsm/nsm-stream.conf
- 备份目录:/etc/nginx/conf.d/nsm/backups
- 日志文件:/var/log/nsm-manager.log
🗑️ 卸载指南
sudo rm -rf /etc/nginx/conf.d/nsm sudo rm -f /usr/local/bin/nsm 如需移除别名,请手动编辑 .bashrc 或 .zshrc。
sudo systemctl reload nginx 📜 许可协议
本项目遵循 MIT 协议。