HAProxy 状态页(Stats 页面)

说明
- HAProxy 自带 Web 状态页(stats page),可以显示后端健康、会话数、连接数、权重等运行时信息,便于运维查看与临时调整(结合 stats socket)。
- 建议仅对受信任的网络或通过认证/防火墙限制访问该页面。
基本配置示例(在 /etc/haproxy/haproxy.cfg 中添加):
haproxy
listen stats
mode http
bind 0.0.0.0:4321 # 可改为 127.0.0.1:4321 或绑定特定网段以增强安全
stats enable
log global
stats uri /status
stats auth lee:lee # 基础认证:用户名 lee,密码 lee
- 添加后重启 HAProxy:
systemctl restart haproxy
状态页截图(登录界面 / 页面):

开启自动刷新(例如每秒刷新)
haproxy
listen stats
mode http
bind 0.0.0.0:4321
stats enable
log global
stats refresh 1
stats uri /status
stats auth lee:lee
stats refresh <seconds>:页面自动刷新时间(秒),便于实时观察指标。
演示 GIF(示例实验录制,已保留):
-
自动刷新演示

-
模拟设备下线(在状态页上观察 backend/down)

推荐安全与运维实践
-
认证与访问控制
- 生产环境不要将状态页直接暴露到公网,建议绑定内部网络或使用反向代理/认证。
- 使用强密码或集成更安全的认证(反向代理 + OAuth / SSO / client cert 等)。
-
限制绑定地址
- 将
bind 0.0.0.0:4321改为bind 127.0.0.1:4321并通过堡垒机/ssh 隧道访问,或绑定仅允许的管理网段。
- 将
-
stats socket(建议同时启用,便于脚本化操作)
-
在 global 段添加(可选):
global stats socket /var/lib/haproxy/stats mode 600 level admin -
通过 socket 可执行运行时命令(查询/调整权重、查看后端状态等):
echo "show stat" | socat stdio /var/lib/haproxy/stats echo "get weight webcluster/haha" | socat stdio /var/lib/haproxy/stats echo "set weight webcluster/haha 1" | socat stdio /var/lib/haproxy/stats
-
-
日志与告警
- 配置 haproxy 日志并结合集中化日志/监控(Prometheus、Grafana、ELK)进行实时告警。
-
最小权限与审计
- stats socket 的文件权限与 SELinux/系统策略要合理设置,避免被未授权用户访问。
-
自动化与脚本
- 结合状态页与 stats socket 做自动化运维脚本(例如:探测后端不健康时自动调整权重、发送告警等)。
常见问题排查
- 无法登录状态页:检查
stats auth配置、浏览器是否发送正确认证、haproxy 是否绑定在正确地址。 - 页面无数据或显示 backend unknown:检查 haproxy 配置是否正确载入(
haproxy -c -f /etc/haproxy/haproxy.cfg),并确认 backend 名称与监听配置一致。 - 页面刷新看不到实时变化:确认
stats refresh已设置,或查看 stats socket 以获得更��确实时数据。
结语
- HAProxy 状态页是快速诊断与临时管理的利器;生产上应注意权限控制与结合更成熟的监控方案(采集指标、告警、时序数据)。