首页/新闻资讯/正文详情

Nginx UI 多主机管理实战:基于 Cluster Node 的集群联邦部署指南

发布时间:2026/9/23 14:27:15 来源:云帆数科 栏目:资讯中心
Nginx UI 多主机管理实战:基于 Cluster Node 的集群联邦部署指南
Nginx UI 多主机管理实战基于 Cluster Node 的集群联邦部署指南【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址: https://gitcode.com/gh_mirrors/ngi/nginx-ui导读当需要从单一 Nginx UI 控制台统一管理分布在多台主机上的 Nginx 时官方推荐使用Cluster Node集群节点能力而非传统的 host_via_ssh 模式。本文以官方文档 manage-multi-host-nginx-with-cluster.md 为主线结合仓库内集群注册、节点鉴权与配置同步的源码实现带你从零搭建一套一主多从的 Nginx 集群联邦包括场景选型、拓扑设计、节点注册配置、Web UI 切换以及集群与 SSH 模式的组合用法。读完本文你将能独立完成多主机 Nginx 的统一纳管、远程 reload/restart 与配置同步。一、什么时候该用 Cluster Node在动手之前先明确选择依据。官方文档给出了一个非常直观的选型表需求host_via_sshcluster Node主机 A 上的容器管理主机 A 自身的 nginx✓✓杀鸡用牛刀主机 A 上的容器管理主机 B 的 nginx✗✓一个 Web UI 跨主机查看配置与日志否✓对端失联时各主机保持自治否✓从源码结构看两种模式的能力边界是完全不同的host_via_ssh 依赖 SSH 通道直连目标主机而 cluster Node 是每台主机各自运行一个 Nginx UI 实例再通过节点联邦把请求转发到对应实例上执行。因此单机场景容器和 nginx 在同一主机用 host_via_ssh 即可无需引入集群跨主机场景容器在 A 机、nginx 在 B 机或者需要一套 UI 纵览多主机就必须使用 cluster Node自治性peer 节点即使与控制端失联自身仍可独立工作这是 SSH 模式不具备的。二、推荐的联邦拓扑官方推荐的拓扑分为四层层级角色说明浏览器打开主导leadNginx UI 实例日常操作只用一个控制台Lead 节点注册 peer 节点并提供节点切换器也可以管理本机自己的 nginxPeer 节点各自运行一套 Nginx UI 实例每个 peer 管理所在主机的 nginxCluster federation连接 lead 节点与 peer 节点所有请求在选中的节点上执行关键设计要点文档明确强调源码亦可印证Lead 节点不会 SSH 进入其他主机。所有跨主机操作都是通过集群节点连接转发的——这一点可以在 api/cluster/nginx.go 的syncReload/syncRestart中看到lead 节点对每个目标节点构造一个基于 nodeauth 的 Resty 客户端然后向该节点的/api/nginx/reload、/api/nginx/restart发起 HTTP 请求并发执行sync.WaitGroup goroutine并对成功/失败推送通知。每个节点只管理本机 nginx。如果某个节点在 Docker 里运行 Nginx UI、却要管理同一台宿主机上安装的 nginx只需要在该节点上单独配置 Manage Host Nginx from Docker与集群联邦互不冲突。三、搭建步骤四步走1. 在每个主机安装 nginx-ui尽量在所有节点上使用相同的部署类型。原生 Linux 安装执行官方一键脚本bash -c $(curl -L https://cloud.nginxui.com/install.sh) installDocker 部署同样支持完整安装方式见 Install Script 与 Getting Started。2. 在每个 peer 上生成 Node Secret登录 peer 的 Web UI进入Settings → Node对应 api/cluster/router.go 中的节点管理 API复制页面上显示的Node Secret。从 internal/cluster/cluster.go 的注册逻辑看node_secret 是节点关系的起点凭证它会被解析后以加密形式EncryptedLegacySecret见 model/node.go存入数据库绝不以明文落库。3. 在 lead 节点注册 peers有两种配置入口app.ini配置文件或 Docker 环境变量。两种方式本质相同——环境变量会被映射进settings.ClusterSettings.Node见 settings/cluster.go该字段声明了ini:,,allowshadow以支持多行重复键同时标记为protected:true sensitive:true即敏感字段。app.ini 方式[cluster] Node http://10.0.0.2:9000?namehost-bnode_secrethost-b-secretenabledtrue Node http://10.0.0.3:9000?namehost-cnode_secrethost-c-secretenabledtruedocker-compose.yml 方式services: nginx-ui: environment: - NGINX_UI_CLUSTER_NODEhttp://10.0.0.2:9000?namehost-bnode_secret...enabledtrue,http://10.0.0.3:9000?namehost-cnode_secret...enabledtrue每条 Node 配置项的 URL 结构为详见 config-cluster.mdScheme://Host(:Port)?nameENV_NAMEnode_secretNODE_SECRETenabled(true/false)参数含义参数说明Scheme://Host(:Port)对端 Nginx UI 的访问地址端口可省略默认按 http/https 推导 80/443name节点在 Web UI 中显示的名称必填node_secret第 2 步复制的 Node Secret必填enabled是否启用该节点取值true/false缺省视为 false加载时机与冲突规避源码依据Nginx UI 会在引导bootstrapping阶段自动调用RegisterPredefinedNodesinternal/cluster/cluster.go对每条配置执行parseNodeUrl解析并入库同时在 Web UI 的环境列表中提供Load from Config按钮对应 api/cluster/node.go 的LoadNodeFromSettings内部会ReloadCluster后重新执行RegisterPredefinedNodes用于手动触发同步。为避免与数据库中已存在的环境冲突注册时只以Scheme://Host(:Port)部分判断唯一性若该地址在库中不存在则按配置创建已存在则不做任何操作。反之如果你从配置文件里删除了某个节点数据库中的记录不会被自动删除需要到 Web UI 中手动处理。安全细节注册过程中任何打印到日志的节点 URL 都会经过sanitizePredefinedNodeURL脱敏处理——node_secret查询参数会被替换为[REDACTED]后再输出避免敏感信息泄露。4. 在 Web UI 中切换节点注册完成后顶栏会出现节点切换器node switcher。选定某个节点后后续所有操作都会路由到该节点执行且每个操作都只发生在该节点本地——主机之间不存在任何 SSH 连接。如果你使用仅共享密钥的旧式鉴权legacy_secret新版本会自动触发升级流程把关系升级为基于 Ed25519 密钥对的配对鉴权paired_ed25519升级过程可见 api/cluster/node_auth.go 的UpgradeLegacyPairing。节点列表中会展示auth_upgrade_status、connection_error等状态字段见 api/cluster/node.go 的nodeResponse。需要重新查看已存储的 Node Secret 时必须通过已验证的安全会话启用了双因素认证的用户才能调起GetNodeSecret接口。四、集群 host_via_ssh 的组合玩法官方文档明确支持一种混合布局让每个集群 peer 内部再运行 host_via_ssh。在这种布局下每个 peer 的容器通过 host_via_ssh 管理自己所在主机上的 nginx集群联邦负责跨主机的编排与统一入口。即SSH 解决单机容器↔宿主机通信集群解决多主机统一管理两者各司其职、互不干扰。配套文档请参考 Cluster configuration reference 与 Manage Host Nginx from Docker。五、进阶跨节点配置同步与远程重载集群联邦不只是切换视角还提供了主动同步能力对应 api/cluster/sync.goPOST /api/nodes/sync把 lead 节点本地的配置configs、站点sites、流streams推送到选定的节点支持overwrite覆盖选项——新加入的节点可以用一次请求快速补齐数据POST /api/namespaces/:id/sync把某个命名空间连同其下所有站点/流复制到该命名空间的每个节点实现一处编辑、处处生效远程重载/重启通过 api/cluster/nginx.go 的syncReload/syncRestart并行对多个节点调用/api/nginx/reload、/api/nginx/restart结果通过通知中心提示成功或失败详情。六、注意事项小结部署一致性所有节点尽量使用相同部署类型降低排障成本端口可达lead 节点必须能通过 HTTP/HTTPS 访问到 peer 的 9000 端口或自定义端口新增节点 URL 只允许 http/https scheme且不允许携带认证信息、查询参数或 fragment见 api/cluster/node.go 的validateNodeURL密钥保管node_secret 为敏感配置落库加密、日志脱敏泄露后可在节点管理中对配对凭证执行轮换rotate删除语义删除配置文件中的节点不会删除数据库记录需在 UI 中操作自治性红利peer 与控制端失联不影响 peer 自身管理本机 nginx适合对高可用有要求的边缘部署。通过以上四步你就拥有了一个统一入口、多主机自治、支持配置下发与远程重载的 Nginx 集群联邦日常的跨主机 nginx 运维从此只需打开一个控制台。【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址: https://gitcode.com/gh_mirrors/ngi/nginx-ui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

使用 cleos get table 查询 EOS 智能合约表数据:从入门到源码级解析
使用 cleos get table 查询 EOS 智能合约表数据:从入门到源码级解析

区块链 【免费下载链接】eos An open source smart contract platform 项目地址: https://gitcode.com/gh_mirrors/eo/eos 点击查看 免费下载 本篇指南围绕 EOS 区块链的核心数据检索操作展开:通过命令行工具 cleos 查询链上智能合约存储的表&#xff… · 2026/9/23 14:27:08

GLM-5.3-Flash 与 DeepSeek 成本实测:TaoToken 统一 Key 下的 MoE 推理账单对比
GLM-5.3-Flash 与 DeepSeek 成本实测:TaoToken 统一 Key 下的 MoE 推理账单对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/23 14:26:59

项目---IM多人聊天室:基于WebSocket与Mongoose的TaoToken配置实战
项目---IM多人聊天室:基于WebSocket与Mongoose的TaoToken配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/23 14:26:43

解读BDU市场报告:从份额排名看电池包断路单元的技术与商业逻辑
解读BDU市场报告:从份额排名看电池包断路单元的技术与商业逻辑

简介:全球电池包断路单元(BDU)市场正处于快速增长期,2023年市场规模约22.28亿美元,预计2029年将达71.19亿美元,年复合增长率21.36%。这份行业研究资源系统梳理了BDU的市场定义、核心驱动因素(汽… · 2026/9/23 15:13:06

AI时代向量引擎技术解析与应用实践
AI时代向量引擎技术解析与应用实践

1. 当AI焦虑遇上技术红利:我们真正该害怕什么?上周公司新来的95后程序员小张突然离职,临走前在工位上贴了张便签:"GPT-5.3要来了,代码写得比我好还不用社保,先溜为敬"。这个略显戏剧化的场景&… · 2026/9/23 15:13:06

ComfyUI-WanVideoWrapper完整教程:从一句话提示词到成片,5分钟跑通AI文生视频
ComfyUI-WanVideoWrapper完整教程:从一句话提示词到成片,5分钟跑通AI文生视频

ComfyUI-WanVideoWrapper完整教程:从一句话提示词到成片,5分钟跑通AI文生视频 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 想让一句"红熊猫站在竹子上&#xff0… · 2026/9/23 15:13:06

短消息中心业务功能详解:从信令路由到状态报告的实战指南
短消息中心业务功能详解:从信令路由到状态报告的实战指南

简介:短消息中心是移动通信网络的核心组件,这份PPT课件系统讲解其业务功能与工作流程,适合通信技术初学者、网络运维人员及备考相关课程的学员。内容覆盖短消息提交、转发、优先级处理、有效期管理、重复转发尝试、状态报告、用户鉴权、汉字短… · 2026/9/23 15:13:00

LanceDB JS SDK 的 CherryPickResult 接口详解:分支 Cherry-Pick 的结果契约与实战解析
LanceDB JS SDK 的 CherryPickResult 接口详解:分支 Cherry-Pick 的结果契约与实战解析

LanceDB JS SDK 的 CherryPickResult 接口详解:分支 Cherry-Pick 的结果契约与实战解析 【免费下载链接】lancedb Developer-friendly OSS embedded retrieval library for multimodal AI. Search More; Manage Less. 项目地址: https://gitcode.com/gh_mirrors/l… · 2026/9/23 15:13:00

秋日怀人/东海陈光剑
秋日怀人/东海陈光剑

秋日怀人 [东海]陈光剑 秋风木叶下, 人间别离久。 昨夜梦见之, 眉宇韫清秋。 白日徒相望, 明月上西楼。 · 2026/9/23 15:12:52

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码