简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

找回密码
立即注册
搜索
发新帖

32

积分

0

好友

6

主题
发表于 4 天前 | 查看: 25| 回复: 0
本帖最后由 小川8433651 于 2025-11-23 20:11 编辑




NSM 是一款高效、可靠的 Shell 脚本工具,专注于简化 Linux 环境下 Nginx Stream 模块(四层代理)的配置与管理。实现高性能的 TCP/UDP 端口转发和基于 SNI 的智能代理。
🚀 核心功能
  • 端口转发: 轻松设置 TCP 和 UDP 端口转发到目标 IP 和端口。
  • SSL 预读 (SNI 路由): 利用 Nginx 的 ssl_preread 功能,根据客户端请求的域名( SNI )自动将流量路由到不同的后端服务器,完美解决单端口多服务问题。
  • 配置管理: 自动添加、修改和删除 Stream 代理规则。
  • 服务控制: 一键重启/重载 Nginx 服务以应用配置。
  • 环境自检: 部署脚本包含智能检测,自动安装 Stream 模块并清理配置冲突。


📋 兼容性要求
本脚本要求您的系统满足以下条件:
  • 操作系统: 兼容主流 Linux 发行版 (Debian 10+, Ubuntu 18.04+, CentOS 7+)。
  • 权限: 必须以 root 用户或具有 sudo 权限的用户运行。
  • 核心组件: curl, nginx, sudo 等(已包含在部署脚本中)。
  • 部署指南和手动安装依赖
    Markdown


🚨 部署风险和兼容性警示 (重要必读)

鉴于此脚本为了兼容性,加入了对主流 Linux 发行版 Nginx 软件包的强制清理和重建逻辑,请注意以下风险:
现有 Nginx 配置将被清除:
此部署脚本在安装过程中,可能会执行 sudo apt purge -y nginx* 等命令。这意味着您当前系统中已安装的 Nginx 软件包和所有自定义配置文件(位于 /etc/nginx/ 目录下)将被彻底移除!
如果您正在生产环境运行 Nginx 服务,此操作将导致您的服务中断,且所有旧配置丢失!
请在执行部署前,务必备份您 /etc/nginx/ 目录下的所有重要配置文件。
Stream 模块兼容性:
脚本会尝试安装 Nginx 核心和 Stream 模块。它能兼容使用 Debian/Ubuntu 官方源或 Nginx 官方源的系统。
如果您的 Nginx 是通过源码编译或非标准方式安装,此脚本可能会导致依赖冲突或无法完全清理,建议在新环境中运行。

🛠️ 一键部署 (推荐)
我们推荐使用一键部署脚本,它将自动安装所有依赖(包括 Nginx Stream 模块)、下载管理脚本并设置 nsm 命令。您无需担心 Stream 模块缺失或配置冲突问题。

步骤 1: 部署并安装运行以下命令,完成所有环境配置和安装:
bash

确保在 Debian/Ubuntu/CentOS 系统上以 root 或 sudo 权限运行
sudo curl -fsSL https://raw.githubusercontent.co ... ager/main/deploy.sh | bash

🛑 请务必复制上方代码块中的完整命令,避免粘贴时命令不完整!


步骤 2: 激活命令
【重要】部署完成后,请执行此命令使 'nsm' 别名生效:
Bash

source ~/.bashrc # 或 source /root/.bashrc

💡 手动安装依赖(如果一键部署失败)
如果您的系统环境特殊,可以手动安装依赖:


对于 Debian/Ubuntu 系统:
Bash

sudo apt update
sudo apt install -y curl vim sudo nginx net-tools iproute2 libnginx-mod-stream

对于 CentOS/RHEL/Fedora 系统:
Bash
sudo yum install -y curl vim sudo nginx net-tools iproute2

或使用 dnfsudo dnf install -y curl vim sudo nginx net-tools iproute2

3. 使用方法和故障排除
🖥️ 使用方法
部署成功后,只需在终端输入 nsm 即可启动管理菜单。
bash
nsm

主菜单选项说明
选项        命令        描述
1        添加或修改代理规则        引导式添加新的端口转发规则,支持 TCP/UDP 和 SSL 预读配置。
2        删除现有代理规则        查看所有已配置的规则,并按序号删除指定的规则。
3        重启 Nginx        检查 Nginx 配置语法并重载/重启 Nginx 服务,使规则生效。
4        系统状态检查        检查 Nginx 服务状态、配置包含状态、 Stream SSL 模块加载状态等。
0        退出 NSM        退出管理工具。


关键特性说明: SSL 预读
当您在添加规则时选择开启 SSL 预读( ssl_preread )时, NSM 会在 Stream 模块中添加配置,让 Nginx 能够读取
SSL 握手时的 SNI 域名信息,从而实现:
单端口多 HTTPS 服务: 例如,将所有 443 端口的流量根据域名路由到不同的内网 Web 服务器。
四层代理: Nginx 在 Stream 模块中工作在四层,不会终止 SSL 连接,证书和加解密工作仍在后端服务器上完成。


⭐ 注意事项与故障排查
  • Nginx 配置测试失败
    如果 Nginx 服务重载失败,或您运行 nsm 后提示配置错误,请执行以下命令进行详细诊断:
Bash
sudo nginx -t
Stream 模块问题: 如果提示找不到 Stream 模块 (dlopen() ... failed),请确认您使用了最新的 deploy.sh ,它会自动安装 libnginx-mod-stream 并清理配置冲突。


语法错误: 如果提示配置语法错误,请检查您的规则文件 /etc/nginx/conf.d/nsm/nsm-stream.conf ,确保没有多余或缺失的花括号 {} 或分号 ;

2. 端口占用问题
  • 如果您添加规则时 Nginx 无法启动,提示端口已被占用 (bind() failed),请运行以下命令检查哪个进程占用了该端口:
Bash
sudo netstat -tuln | grep <端口号>

3. 配置路径
所有规则文件都存储在以下路径:
主规则文件: /etc/nginx/conf.d/nsm/nsm-stream.conf
备份目录: /etc/nginx/conf.d/nsm/backups
日志文件: /var/log/nsm-manager.log

4. 卸载指南和许可协议
🗑️ 卸载指南如果您希望彻底移除 Nginx Stream Manager (NSM),请执行以下步骤:
1. 清除 Nginx 配置:
bash
sudo rm -rf /etc/nginx/conf.d/nsm

2.移除管理脚本:
Bash
sudo rm -f /usr/local/bin/nsm

3.移除别名 (可选):
手动编辑您的 .bashrc 或 .zshrc 文件,删除 alias nsm='...' 这一行。

4.重载 Nginx:
Bash
sudo systemctl reload nginx

📜 许可协议
本项目遵循 MIT 协议。
项目地址:https://github.com/pansir0290/nginx-stream-manager


您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|AAWW论坛

GMT+8, 2025-11-27 10:36 , Processed in 0.051675 second(s), 19 queries .

Powered by aaww.net

管理员:[email protected]

快速回复 返回顶部 返回列表