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

9.6 KiB
Raw Blame History

English | Francais | 中文

HAProxy Manager - 反向代理仪表板

企业级反向代理管理,支持自动 SSL 证书、虚拟主机配置和后端健康监控。

功能特性

功能 描述
虚拟主机管理 创建和管理虚拟主机
ACME SSL 自动 Let's Encrypt 证书
负载均衡 Round-robin、least-conn、source
健康检查 后端服务器监控
统计信息 实时流量仪表板
配置生成器 自动生成 HAProxy 配置
LXC 容器 在隔离容器中运行

快速开始

创建虚拟主机

  1. 转到 服务 -> HAProxy -> 虚拟主机
  2. 点击 + 添加虚拟主机
  3. 填写:
    • 域名app.example.com
    • 后端:选择或创建
    • SSL:启用
    • ACME:自动证书
  4. 点击 保存并应用

架构

                    +-------------------------------------+
   互联网           |         HAProxy 容器               |
       |            |  +-----------------------------+   |
       v            |  |      前端                   |   |
  +---------+       |  |  :80 -> 重定向到 :443      |   |
  | 端口 80 |------>|  |  :443 -> SSL 终止         |   |
  |端口 443 |       |  +-------------+---------------+   |
  +---------+       |                |                   |
                    |                v                   |
                    |  +-----------------------------+   |
                    |  |      后端                   |   |
                    |  |  app.example.com ->:8080    |   |
                    |  |  api.example.com ->:3000    |   |
                    |  |  blog.example.com->:4000    |   |
                    |  +-----------------------------+   |
                    +-------------------------------------+

仪表板

+------------------------------------------------------+
|  HAProxy                              运行中         |
+------------------------------------------------------+
|                                                      |
|  统计信息                                            |
|  +- 虚拟主机5 个活跃                              |
|  +- 后端8 个已配置                                |
|  +- 证书5 个有效                                  |
|  +- 请求12.5K/分钟                                |
|                                                      |
|  后端健康状态                                        |
|  +------------+--------+--------+---------+          |
|  | 后端       | 状态   | 服务器 | 延迟    |          |
|  +------------+--------+--------+---------+          |
|  | webapp     | 正常   | 2/2    | 12ms    |          |
|  | api        | 正常   | 1/1    | 8ms     |          |
|  | blog       | 降级   | 1/2    | 45ms    |          |
|  +------------+--------+--------+---------+          |
|                                                      |
+------------------------------------------------------+

虚拟主机配置

创建虚拟主机

ubus call luci.haproxy create_vhost '{
  "domain": "app.example.com",
  "backend": "webapp",
  "ssl": 1,
  "ssl_redirect": 1,
  "acme": 1,
  "enabled": 1
}'

虚拟主机选项

选项 默认值 描述
domain - 域名(必填)
backend - 要路由到的后端名称
ssl 1 启用 SSL/TLS
ssl_redirect 1 将 HTTP 重定向到 HTTPS
acme 1 自动请求 Let's Encrypt 证书
enabled 1 虚拟主机活跃

列出虚拟主机

ubus call luci.haproxy list_vhosts

# 响应:
{
  "vhosts": [{
    "id": "app_example_com",
    "domain": "app.example.com",
    "backend": "webapp",
    "ssl": true,
    "ssl_redirect": true,
    "acme": true,
    "enabled": true,
    "cert_status": "valid",
    "cert_expiry": "2025-03-15"
  }]
}

后端配置

创建后端

ubus call luci.haproxy create_backend '{
  "name": "webapp",
  "mode": "http",
  "balance": "roundrobin"
}'

向后端添加服务器

ubus call luci.haproxy create_server '{
  "backend": "webapp",
  "name": "srv1",
  "address": "192.168.255.10",
  "port": 8080,
  "weight": 100,
  "check": 1
}'

后端模式

模式 描述
http 第 7 层 HTTP 代理
tcp 第 4 层 TCP 代理

负载均衡

算法 描述
roundrobin 轮询服务器
leastconn 最少活跃连接
source 按客户端 IP 粘性
uri 按 URI 哈希粘性

SSL 证书

ACME 自动证书

当设置 acme: 1 时:

  1. HAProxy 在端口 80 上服务 ACME 挑战
  2. Let's Encrypt 验证域名所有权
  3. 证书存储在 /srv/haproxy/certs/
  4. 到期前自动续期

手动证书

# 上传证书
ubus call luci.haproxy upload_certificate '{
  "domain": "app.example.com",
  "cert": "<PEM 证书>",
  "key": "<PEM 私钥>"
}'

证书状态

ubus call luci.haproxy list_certificates

# 响应:
{
  "certificates": [{
    "domain": "app.example.com",
    "status": "valid",
    "issuer": "Let's Encrypt",
    "expiry": "2025-03-15",
    "days_left": 45
  }]
}

手动请求证书

ubus call luci.haproxy request_certificate '{"domain":"app.example.com"}'

统计信息

获取统计

ubus call luci.haproxy get_stats

# 响应:
{
  "frontend": {
    "requests": 125000,
    "bytes_in": 1234567890,
    "bytes_out": 9876543210,
    "rate": 150
  },
  "backends": [{
    "name": "webapp",
    "status": "UP",
    "servers_up": 2,
    "servers_total": 2,
    "requests": 45000,
    "response_time_avg": 12
  }]
}

统计页面

访问 HAProxy 统计:

http://192.168.255.1:8404/stats

配置

UCI 结构

# /etc/config/haproxy

config haproxy 'main'
    option enabled '1'
    option stats_port '8404'

config backend 'webapp'
    option name 'webapp'
    option mode 'http'
    option balance 'roundrobin'
    option enabled '1'

config server 'webapp_srv1'
    option backend 'webapp'
    option name 'srv1'
    option address '192.168.255.10'
    option port '8080'
    option weight '100'
    option check '1'
    option enabled '1'

config vhost 'app_example_com'
    option domain 'app.example.com'
    option backend 'webapp'
    option ssl '1'
    option ssl_redirect '1'
    option acme '1'
    option enabled '1'

生成配置

# 从 UCI 重新生成 haproxy.cfg
ubus call luci.haproxy generate

# 重新加载 HAProxy
ubus call luci.haproxy reload

验证配置

ubus call luci.haproxy validate

# 响应:
{
  "valid": true,
  "message": "配置有效"
}

RPCD API

服务控制

方法 描述
status 获取 HAProxy 状态
start 启动 HAProxy 服务
stop 停止 HAProxy 服务
restart 重启 HAProxy
reload 重新加载配置
generate 生成配置文件
validate 验证配置

虚拟主机管理

方法 描述
list_vhosts 列出所有虚拟主机
create_vhost 创建新虚拟主机
update_vhost 更新虚拟主机
delete_vhost 删除虚拟主机

后端管理

方法 描述
list_backends 列出所有后端
create_backend 创建后端
delete_backend 删除后端
create_server 向后端添加服务器
delete_server 移除服务器

证书

方法 描述
list_certificates 列出所有证书
request_certificate 请求 ACME 证书
upload_certificate 上传手动证书
delete_certificate 删除证书

文件位置

路径 描述
/etc/config/haproxy UCI 配置
/var/lib/lxc/haproxy/ LXC 容器根目录
/srv/haproxy/haproxy.cfg 生成的配置
/srv/haproxy/certs/ SSL 证书
/srv/haproxy/acme/ ACME 挑战
/usr/libexec/rpcd/luci.haproxy RPCD 后端
/usr/sbin/haproxyctl CLI 工具

CLI 工具

haproxyctl 命令

# 状态
haproxyctl status

# 列出虚拟主机
haproxyctl vhosts

# 添加虚拟主机
haproxyctl vhost add app.example.com --backend webapp --ssl --acme

# 删除虚拟主机
haproxyctl vhost del app.example.com

# 列出证书
haproxyctl cert list

# 请求证书
haproxyctl cert add app.example.com

# 生成配置
haproxyctl generate

# 重新加载
haproxyctl reload

# 验证
haproxyctl validate

故障排除

HAProxy 无法启动

# 检查容器
lxc-info -n haproxy

# 启动容器
lxc-start -n haproxy

# 检查日志
lxc-attach -n haproxy -- cat /var/log/haproxy.log

503 服务不可用

  1. 检查后端是否已配置:
    ubus call luci.haproxy list_backends
    
  2. 验证服务器是否可达:
    curl http://192.168.255.10:8080
    
  3. 检查 HAProxy 日志

证书不工作

  1. 确保 DNS 指向您的公网 IP
  2. 确保端口 80/443 可从互联网访问
  3. 检查 ACME 挑战:
    curl http://app.example.com/.well-known/acme-challenge/test
    

配置验证失败

# 显示验证错误
lxc-attach -n haproxy -- haproxy -c -f /etc/haproxy/haproxy.cfg

安全性

防火墙规则

HAProxy 需要从 WAN 打开端口 80/443

# 当虚拟主机使用 SSL 时自动创建
uci show firewall | grep HAProxy

速率限制

添加到后端配置:

stick-table type ip size 100k expire 30s store http_req_rate(10s)
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 100 }

许可证

MIT 许可证 - Copyright (C) 2025 CyberMind.fr