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

4.7 KiB
Raw Blame History

English | Francais | 中文

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 服务挑战文件
                      |
                      +- 其他路径 -> 正常后端

请求证书

# 生产证书(浏览器信任)
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 > 设置 中配置

证书命令

haproxyctl cert list              # 列出已安装的证书
haproxyctl cert add <domain>      # 请求新证书
haproxyctl cert renew [domain]    # 续期证书
haproxyctl cert remove <domain>   # 移除证书
haproxyctl cert import <domain>   # 导入现有证书

配置

UCI 选项

# 主要设置
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

创建虚拟主机

# 通过 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

创建后端

# 通过 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 参考

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 解析:

    nslookup example.com
    
  2. 验证端口 80 可访问:

    # 从外部服务器
    curl -I http://example.com/.well-known/acme-challenge/test
    
  3. 检查 HAProxy 是否运行:

    haproxyctl status
    
  4. 查看日志:

    logread | grep -i acme
    logread | grep -i haproxy
    

HAProxy 无法启动

  1. 验证配置:

    haproxyctl validate
    
  2. 检查证书文件:

    ls -la /srv/haproxy/certs/
    
  3. 查看容器日志:

    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