secubox-openwrt/package/secubox/luci-app-vhost-manager/README.zh.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

572 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# VHost Manager - 反向代理和SSL证书管理
**版本:** 2.0.0
**最后更新:** 2026-01-01
**状态:** 活跃
用于管理nginx反向代理虚拟主机和通过Let's Encrypt获取SSL证书的LuCI应用程序集成了服务模板和重定向管理功能。
## 功能特性
### 内部服务目录 (v2.0+)
- **预配置服务模板** - 19个即用型内部服务
- **一键激活** - 使用最佳SSL、认证和WebSocket设置部署服务
- **实时状态** - 自动刷新仪表板显示活跃/已配置服务
- **智能功能检测** - 自动SSL、认证和WebSocket配置
- **分类组织** - 按类型分组的服务(物联网、媒体、安全、生产力等)
- **自动刷新** - 每10秒实时更新
- **现代网格界面** - 响应式卡片布局,带功能徽章
### 重定向规则管理 (v2.0+)
- **预建重定向模板** - 6种常见重定向模式CDN缓存、隐私重定向、故障转移
- **HTTP重定向代码** - 支持301永久、302临时、307临时保留方法
- **模板激活** - 一键部署重定向规则
- **活跃重定向仪表板** - 已配置重定向的实时状态
- **分类组织** - 按用例分组的模板(生产力、媒体、安全、网络)
- **自动刷新** - 每10秒实时更新
### 虚拟主机管理 (v1.0+)
- 创建和管理nginx反向代理配置
- 支持HTTP和HTTPS虚拟主机
- 部署前后端连接测试
- WebSocket协议支持
- HTTP Basic认证
- 配置更改时自动重载nginx
- **启用/禁用开关** - 无需删除即可快速控制服务
- **删除按钮** - 带确认的清洁VHost删除
### SSL证书管理 (v1.0+)
- 通过acme.sh提供Let's Encrypt证书
- 证书状态监控和过期跟踪
- 颜色编码的过期警告(红色 < 7天橙色 < 30天
- 证书详情查看器
- 自动证书续期支持
### 访问日志监控 (v1.0+)
- 实时nginx访问日志查看器
- 按域名过滤日志
- 可配置行数显示50-500行
- 终端风格日志显示
### 配置文件激活系统 (v2.0+)
- **基于模板部署** - 从预配置模板创建VHost
- **智能功能配置** - 根据服务需求自动设置SSL/认证/WebSocket
- **模板说明** - 激活时显示上下文信息
- **确认对话框** - 部署前审查设置
- **激活/停用** - 带视觉反馈的简易模板管理
## 安装
```bash
opkg update
opkg install luci-app-vhost-manager
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
```
## 依赖
- **luci-base**LuCI框架
- **rpcd**用于后端通信的RPC守护进程
- **nginx-ssl**带SSL支持的Nginx Web服务器
- **acme**用于Let's Encrypt证书的ACME客户端
- **curl**用于后端测试的HTTP客户端
## 配置
### UCI配置 (`/etc/config/vhosts`)
虚拟主机现在位于`/etc/config/vhosts`允许其他SecuBox组件声明式安装代理安装时会放置一个默认文件像其他UCI配置一样编辑它
```bash
config global 'global'
option enabled '1'
option auto_reload '1'
config vhost 'myapp'
option domain 'app.example.com'
option upstream 'http://127.0.0.1:8080'
option tls 'acme' # off|acme|manual
option cert_path '/etc/custom/fullchain.pem' # tls=manual时使用
option key_path '/etc/custom/privkey.pem'
option auth '1'
option auth_user 'admin'
option auth_pass 'secretpassword'
option websocket '1'
option enabled '1'
```
> 旧版安装可能仍提供`/etc/config/vhost_manager`以保持向后兼容但RPC后端现在专门从`/etc/config/vhosts`生成`/etc/nginx/conf.d/*.conf`。
### 选项
#### 全局部分
- `enabled`启用/禁用VHost Manager默认1
- `auto_reload`配置更改时自动重载nginx默认1
- `log_retention`访问日志保留天数默认30
#### VHost部分
- `domain`此虚拟主机的域名必需
- `upstream`要代理的后端URL必需例如 http://192.168.1.100:8080
- `tls`TLS策略`off`、`acme``manual`
- `cert_path` / `key_path``tls=manual`时需要指向PEM文件
- `auth`启用HTTP Basic认证默认0
- `auth_user` / `auth_pass``auth=1`时使用的凭据
- `websocket`启用WebSocket头默认0
- `enabled`禁用vhost但不删除默认1
## 使用方法
### Web界面
在LuCI中导航至 **服务 -> VHost Manager**
#### 概览选项卡
- 系统状态Nginx运行中ACME可用性
- 虚拟主机统计SSL启用认证保护WebSocket
- 证书数量和过期状态
- 最近虚拟主机列表
#### 虚拟主机选项卡
- 添加新虚拟主机
- 编辑现有配置
- 保存前测试后端连接
- 启用/禁用SSL认证WebSocket
- 删除虚拟主机
#### 证书选项卡
- 请求新的Let's Encrypt证书
- 查看已安装证书及过期日期
- 证书详情查看器
- 颜色编码的过期警告
#### 日志选项卡
- 按域名查看nginx访问日志
- 选择显示行数50-500
- 实时日志流
#### 内部服务选项卡 (v2.0+)
内部服务选项卡为流行的自托管应用程序提供19个预配置服务模板的目录
**仪表板指标:**
- **活跃** - 当前启用并运行的服务
- **已配置** - 有VHost条目的服务总数
- **可用** - 目录中的模板总数
**活跃服务网格:**
每个已配置服务显示
- 服务图标和名称
- 状态徽章活跃/禁用
- 类别和描述
- 域名后端URL和端口
- 功能徽章SSL认证WebSocket
- 三个操作按钮
- **编辑** - 导航到VHost配置
- **启用/禁用** - 切换服务状态
- **删除** - 删除VHost配置带确认
**服务模板:**
模板按类别组织
| 类别 | 服务 |
|------|------|
| **核心服务** | LuCI UI |
| **监控** | Netdata |
| **安全** | CrowdSecVaultwarden |
| **网络** | NoDogSplashAdGuard HomeUptime Kuma |
| **物联网与家庭自动化** | DomoticzZigbee2MQTTHome AssistantMagicMirror |
| **媒体** | Lyrion Music ServerJellyfin |
| **AI与机器学习** | LocalAI |
| **生产力** | CitadelISPConfigMail-in-a-BoxNextcloudGitea |
| **托管与控制面板** | Portainer |
**模板激活工作流程:**
1. 点击任意模板上的 **激活**
2. 查看激活对话框显示
- 服务名称和图标
- 域名和后端URL
- 所需功能SSL认证WebSocket
- 特殊说明例如"Nextcloud处理自己的认证"
3. 点击 **激活** 创建VHost
4. 服务自动配置最佳设置
**示例激活Nextcloud**
模板配置
```
图标:云
名称Nextcloud
域名cloud.local
后端http://127.0.0.1:80
端口80
类别:生产力
功能:
- 需要SSL/TLS
- WebSocket支持
说明:"Nextcloud处理自己的认证。在config.php中配置可信域名。"
```
激活后
- `cloud.local`创建VHost
- 自动配置SSLACME模式
- 启用WebSocket头
- 后端代理到端口80
- 服务在仪表板中标记为"活跃"
#### 重定向选项卡 (v2.0+)
重定向选项卡管理nginx HTTP重定向规则提供常见用例的预建模板
**仪表板指标:**
- **活跃** - 当前启用的重定向规则
- **总计** - 所有已配置的重定向
- **模板** - 可用重定向模板
**活跃重定向网格:**
每个已配置重定向显示
- 重定向图标
- 域名
- 状态徽章活跃/禁用
- 源域名
- 目标URL
- HTTP代码徽章301302307
- 三个操作按钮
- **编辑** - 导航到VHost配置
- **启用/禁用** - 切换重定向状态
- **删除** - 删除重定向规则带确认
**重定向模板:**
| 模板 | HTTP代码 | 类别 | 用例 |
|------|----------|------|------|
| **Nextcloud到LAN** | 301 | 生产力 | 强制远程用户使用LAN托管的Nextcloud |
| **Steam CDN缓存** | 302 | 媒体 | 将下载重定向到本地缓存 |
| **YouTube到Invidious** | 307 | 媒体 | 隐私友好的YouTube重定向 |
| **邮件故障转移** | 302 | 生产力 | 故障转移到备用邮件服务 |
| **广告拦截重定向** | 301 | 安全 | 将广告服务器重定向到localhost |
| **CDN到本地缓存** | 302 | 网络 | 本地缓存CDN资源 |
**HTTP重定向代码**
- **301永久** - 浏览器缓存重定向用于永久移动
- **302临时** - 浏览器不缓存用于临时重定向
- **307临时保留方法** - 类似302但保留HTTP方法POST/GET
### 命令行
#### 列出虚拟主机
```bash
ubus call luci.vhost-manager list_vhosts
```
#### 获取VHost Manager状态
```bash
ubus call luci.vhost-manager status
```
#### 添加虚拟主机
```bash
ubus call luci.vhost-manager add_vhost '{
"domain": "app.example.com",
"backend": "http://192.168.1.100:8080",
"tls_mode": "acme",
"auth": true,
"auth_user": "admin",
"auth_pass": "secret",
"websocket": true,
"enabled": true
}'
```
#### 测试后端连接
```bash
ubus call luci.vhost-manager test_backend '{
"backend": "http://192.168.1.100:8080"
}'
```
#### 请求SSL证书
```bash
ubus call luci.vhost-manager request_cert '{
"domain": "app.example.com",
"email": "admin@example.com"
}'
```
#### 列出证书
```bash
ubus call luci.vhost-manager list_certs
```
#### 重载Nginx
```bash
ubus call luci.vhost-manager reload_nginx
```
#### 获取访问日志
```bash
ubus call luci.vhost-manager get_access_logs '{
"domain": "app.example.com",
"lines": 100
}'
```
## Nginx配置
VHost Manager在`/etc/nginx/conf.d/`中生成nginx配置文件
### 生成的配置示例仅HTTP
```nginx
server {
listen 80;
server_name app.example.com;
access_log /var/log/nginx/app.example.com.access.log;
error_log /var/log/nginx/app.example.com.error.log;
location / {
proxy_pass http://192.168.1.100:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
### 生成的配置示例带WebSocket的HTTPS
```nginx
server {
listen 80;
server_name app.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name app.example.com;
ssl_certificate /etc/acme/app.example.com/fullchain.cer;
ssl_certificate_key /etc/acme/app.example.com/app.example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
access_log /var/log/nginx/app.example.com.access.log;
error_log /var/log/nginx/app.example.com.error.log;
location / {
proxy_pass http://192.168.1.100:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
```
### 带认证的示例
```nginx
server {
listen 443 ssl http2;
server_name app.example.com;
ssl_certificate /etc/acme/app.example.com/fullchain.cer;
ssl_certificate_key /etc/acme/app.example.com/app.example.com.key;
location / {
auth_basic "受限访问";
auth_basic_user_file /etc/nginx/htpasswd/app.example.com;
proxy_pass http://192.168.1.100:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
## SSL证书工作流程
1. **DNS配置**确保您的域名指向路由器的公网IP
2. **端口转发**将端口80和443转发到您的路由器
3. **请求证书**使用证书选项卡请求Let's Encrypt证书
4. **配置VHost**为虚拟主机启用SSL
5. **监控过期**证书90天后过期在证书选项卡中监控
### ACME证书位置
- 证书`/etc/acme/{domain}/fullchain.cer`
- 私钥`/etc/acme/{domain}/{domain}.key`
- ACME账户`/etc/acme/account.conf`
## ubus API参考
### status()
获取VHost Manager和nginx状态
**返回:**
```json
{
"nginx_running": true,
"nginx_version": "1.23.3",
"acme_available": true,
"acme_version": "3.0.5",
"vhost_count": 5
}
```
### list_vhosts()
列出所有已配置的虚拟主机
### get_vhost(domain)
获取特定虚拟主机的详细信息
**参数:**
- `domain`域名
### add_vhost(payload)
添加新虚拟主机
**参数:**
- `domain`域名必需
- `backend`后端URL必需
- `tls_mode``off`、`acme``manual`必需
- `auth`启用认证布尔值
- `auth_user` / `auth_pass`启用auth时的凭据
- `websocket`启用WebSocket布尔值
- `enabled`禁用vhost但不删除布尔值
- `cert_path` / `key_path``tls_mode=manual`时必需
### update_vhost(payload)
更新现有虚拟主机
**参数:** `add_vhost`相同省略的字段保留其先前的值
### delete_vhost(domain)
删除虚拟主机
### test_backend(backend)
测试到后端服务器的连接
### request_cert(domain, email)
请求Let's Encrypt SSL证书
### list_certs()
列出所有已安装的SSL证书
### reload_nginx()
重载nginx配置
### get_access_logs(domain, lines)
获取域名的nginx访问日志
## 故障排除
### Nginx无法启动
检查nginx配置语法
```bash
nginx -t
```
查看nginx错误日志
```bash
logread | grep nginx
```
### 证书请求失败
确保
1. 域名DNS指向您的公网IP
2. 端口80和443已转发到您的路由器
3. 防火墙允许端口80和443的入站连接
4. 没有其他服务使用端口80acme.sh需要它进行验证
检查ACME日志
```bash
cat /var/log/acme.log
```
### 后端无法访问
手动测试后端
```bash
curl -I http://192.168.1.100:8080
```
检查后端是否在监听
```bash
netstat -tuln | grep 8080
```
### WebSocket不工作
确保
1. 在虚拟主机配置中启用了WebSocket支持
2. 后端应用程序支持WebSocket
3. 代理超时时间不要太短默认86400秒
### 认证不工作
检查htpasswd文件是否存在
```bash
ls -l /etc/nginx/.luci-app-vhost-manager_{domain}
```
## 安全注意事项
1. **SSL证书**生产服务始终使用HTTPS
2. **强密码**HTTP Basic认证使用强密码
3. **后端安全**确保后端服务不能从互联网直接访问
4. **防火墙规则**配置防火墙只允许必要的端口
5. **日志监控**定期检查访问日志以发现可疑活动
6. **证书续期**监控证书过期并确保自动续期正常工作
## 许可证
Apache-2.0
## 维护者
SecuBox Project <support@secubox.com>
## 版本
2.0.0