secubox-openwrt/DOCS-zh/embedded/vhost-manager.md
CyberMind-FR ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
Add complete French (fr) and Chinese (zh) translations for all documentation:

- Root files: README, CHANGELOG, SECURITY, BETA-RELEASE
- docs/: All 16 core documentation files
- DOCS/: All 19 deep-dive documents including embedded/ and archive/
- package/secubox/: All 123+ package READMEs
- Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/

Total: 346 translation files created

Each file includes language switcher links for easy navigation between
English, French, and Chinese versions.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-20 10:00:18 +01:00

4.4 KiB
Raw Blame History

VHost 管理器与反向代理说明

Languages: English | Francais | 中文

版本: 1.0.0 最后更新: 2025-12-28 状态: 活跃

SecuBox 包含 luci-app-vhost-managerLuCI 仪表板 + RPC 后端)以及 scripts/vhostctl.sh 助手,使应用程序、向导和配置文件可以声明式地在 nginx 后面发布 HTTP 服务,并支持可选的 TLS 和 HTTP 认证。


前提条件

  1. 软件包:已安装 luci-app-vhost-manager(安装 RPCD 脚本 + LuCI 界面)和带 SSL 的 nginxnginx-ssl)。
  2. 证书:通过 acme.sh 自动获取 ACME 证书,或使用手动 PEM 文件配合 tls manual
  3. 应用程序:确保上游服务在 localhost 或 LAN 上监听例如Zigbee2MQTT 界面在 http://127.0.0.1:8080)。
  4. 防火墙:在 WAN 接口上允许入站端口 80/443。

CLIscripts/vhostctl.sh

此助手操作 /etc/config/vhosts,可被未来的向导/App Store 安装程序调用。

# 列出现有映射
scripts/vhostctl.sh list

# 为 Zigbee2MQTT 界面添加 HTTPS 反向代理
scripts/vhostctl.sh add \
  --domain zigbee.home.lab \
  --upstream http://127.0.0.1:8080 \
  --tls acme \
  --websocket \
  --enable

# 稍后启用/禁用或删除
scripts/vhostctl.sh disable --domain zigbee.home.lab
scripts/vhostctl.sh remove --domain zigbee.home.lab

# 修改后重新加载 nginx
scripts/vhostctl.sh reload

选项:

选项 用途
--domain 公共主机名(必填)。
--upstream 本地服务 URLhttp://127.0.0.1:8080)。
`--tls off acme
--auth-user/--auth-pass 启用 HTTP 基本认证。
--websocket 为 WebSocket 应用添加 Upgrade 头。
--enable / --disable 启用/禁用而不删除。

脚本具有幂等性:使用现有域名运行 add 会更新该条目。


LuCI 仪表板

导航至 服务 -> SecuBox -> VHost 管理器 可以:

  • 查看活跃/禁用的虚拟主机、TLS 状态、证书过期时间。
  • 编辑或删除条目、请求 ACME 证书、查看访问日志。
  • 使用表单创建条目域名、上游、TLS、认证、WebSocket

LuCI 后端写入相同的 /etc/config/vhosts 文件,因此通过 vhostctl.sh 所做的更改会立即显示。


示例:发布 Zigbee2MQTT

  1. 安装 Zigbee2MQTTDocker并确认界面在端口 8080 上监听(参见 docs/embedded/zigbee2mqtt-docker.md)。
  2. 将其映射到 HTTPS 后面:
    scripts/vhostctl.sh add \
      --domain zigbee.secubox.local \
      --upstream http://127.0.0.1:8080 \
      --tls acme \
      --websocket
    scripts/vhostctl.sh reload
    
  3. (可选)使用 LuCI 请求证书并监控日志。

DMZ 模式 + VHost 工作流

启用新的 路由器 + DMZ 网络模式(管理 -> SecuBox -> 网络 -> 模式 -> DMZ

  1. eth2(或其他物理端口)分配为 DMZ 接口,并为其分配子网,如 192.168.50.1/24
  2. 应用该模式;后端会创建一个专用防火墙区域(dmz),仅转发到 WAN。
  3. 将服务器(如 Lyrion、Zigbee2MQTT 界面)连接到 DMZ 端口,使其可以访问互联网但无法访问 LAN。
  4. 使用 scripts/vhostctl.sh add ... --upstream http://192.168.50.10:32400 通过带 TLS 的 nginx 暴露 DMZ 服务。

回滚只需一键:在 2 分钟窗口内使用网络模式的"确认/回滚"对话框自动恢复先前的配置。


故障排除

问题 解决方案
scripts/vhostctl.sh add ... 报错 "Unknown option" 确保使用 busybox sh/bin/sh)。
ACME 证书缺失 确认已安装 acme.sh域名解析到路由器80/443 端口可访问。
502/504 错误 检查上游服务、防火墙,或将 --upstream 改为 LAN IP。
TLS 手动模式失败 提供 PEM 文件的完整路径并验证权限。
更改不可见 运行 scripts/vhostctl.sh reloadubus call luci.vhost-manager reload_nginx

自动化说明

  • 向导/App Store 可以调用 scripts/vhostctl.sh 在安装服务时注册它们。
  • 配置文件可以保留声明式清单(域名 -> 上游)并在切换模式时调用 vhostctl.sh add/remove
  • /etc/config/vhosts 仍然是唯一的事实来源,由 LuCI 应用和 RPC 后端使用。