secubox-openwrt/package/secubox/secubox-app-haproxy/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

195 lines
4.7 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.

[English](README.md) | [Francais](README.fr.md) | 中文
# SecuBox HAProxy App
HAProxy 反向代理,通过 ACMELet's Encrypt自动管理 SSL/TLS 证书。
## 功能特性
- **LXC 容器隔离** - HAProxy 在隔离容器中运行
- **自动 HTTPS** - ACME 证书颁发和续期
- **零停机证书** - Webroot 模式在颁发期间保持 HAProxy 运行
- **虚拟主机** - 多域名自动路由
- **负载均衡** - Round-robin、最少连接、源 IP
- **健康检查** - 自动后端健康监控
- **统计仪表板** - 端口 8404 上的实时统计
## 证书管理
### ACME Webroot 模式(零停机)
HAProxy 内部处理 ACME 挑战 - 无需重启:
```
互联网 -> 端口 80 -> HAProxy
|
+- /.well-known/acme-challenge/
| |
| acme_challenge 后端 (:8402)
| |
| busybox httpd 服务挑战文件
|
+- 其他路径 -> 正常后端
```
### 请求证书
```bash
# 生产证书(浏览器信任)
haproxyctl cert add example.com
# 测试证书(用于测试,不受信任)
uci set haproxy.acme.staging='1'
uci commit haproxy
haproxyctl cert add example.com
```
### ACME 前置要求
1. **DNS** - 域名必须指向您服务器的公网 IP
2. **端口 80** - 必须可从互联网访问(防火墙/NAT
3. **邮箱** - 在 LuCI > 服务 > HAProxy > 设置 中配置
### 证书命令
```bash
haproxyctl cert list # 列出已安装的证书
haproxyctl cert add <domain> # 请求新证书
haproxyctl cert renew [domain] # 续期证书
haproxyctl cert remove <domain> # 移除证书
haproxyctl cert import <domain> # 导入现有证书
```
## 配置
### UCI 选项
```bash
# 主要设置
uci set haproxy.main.enabled='1'
uci set haproxy.main.http_port='80'
uci set haproxy.main.https_port='443'
uci set haproxy.main.stats_port='8404'
# ACME 设置
uci set haproxy.acme.email='admin@example.com'
uci set haproxy.acme.staging='0' # 0=生产1=测试
uci set haproxy.acme.key_type='ec-256' # ec-256, ec-384, rsa-2048, rsa-4096
uci commit haproxy
```
### 创建虚拟主机
```bash
# 通过 CLI
haproxyctl vhost add example.com mybackend --ssl --acme
# 通过 UCI
uci set haproxy.example=vhost
uci set haproxy.example.domain='example.com'
uci set haproxy.example.backend='mybackend'
uci set haproxy.example.ssl='1'
uci set haproxy.example.ssl_redirect='1'
uci set haproxy.example.acme='1'
uci set haproxy.example.enabled='1'
uci commit haproxy
haproxyctl generate && haproxyctl reload
```
### 创建后端
```bash
# 通过 CLI
haproxyctl backend add myapp --server 192.168.1.100:8080
# 通过 UCI
uci set haproxy.myapp=backend
uci set haproxy.myapp.name='myapp'
uci set haproxy.myapp.mode='http'
uci set haproxy.myapp.balance='roundrobin'
uci set haproxy.myapp.enabled='1'
uci set haproxy.myapp_srv1=server
uci set haproxy.myapp_srv1.backend='myapp'
uci set haproxy.myapp_srv1.address='192.168.1.100'
uci set haproxy.myapp_srv1.port='8080'
uci set haproxy.myapp_srv1.check='1'
uci commit haproxy
```
## CLI 参考
```bash
haproxyctl status # 显示状态
haproxyctl start # 启动 HAProxy
haproxyctl stop # 停止 HAProxy
haproxyctl restart # 重启 HAProxy
haproxyctl reload # 重新加载配置
haproxyctl generate # 重新生成配置文件
haproxyctl validate # 验证配置
haproxyctl vhost list # 列出虚拟主机
haproxyctl backend list # 列出后端
haproxyctl cert list # 列出证书
haproxyctl stats # 显示运行时统计
```
## 故障排除
### 证书颁发失败
1. **检查 DNS 解析:**
```bash
nslookup example.com
```
2. **验证端口 80 可访问:**
```bash
# 从外部服务器
curl -I http://example.com/.well-known/acme-challenge/test
```
3. **检查 HAProxy 是否运行:**
```bash
haproxyctl status
```
4. **查看日志:**
```bash
logread | grep -i acme
logread | grep -i haproxy
```
### HAProxy 无法启动
1. **验证配置:**
```bash
haproxyctl validate
```
2. **检查证书文件:**
```bash
ls -la /srv/haproxy/certs/
```
3. **查看容器日志:**
```bash
lxc-attach -n haproxy -- cat /var/log/haproxy.log
```
## 文件位置
| 路径 | 描述 |
|------|------|
| `/etc/config/haproxy` | UCI 配置 |
| `/srv/haproxy/config/haproxy.cfg` | 生成的 HAProxy 配置 |
| `/srv/haproxy/certs/` | SSL 证书 |
| `/etc/acme/` | ACME 账户和证书数据 |
| `/var/www/acme-challenge/` | ACME 挑战 webroot |
| `/srv/lxc/haproxy/` | LXC 容器 rootfs |
## 许可证
MIT 许可证 - Copyright (C) 2025 CyberMind.fr