0

0

Linux HAProxy 负载均衡高级配置

冷漠man

冷漠man

发布时间:2026-03-01 14:47:35

|

996人浏览过

|

来源于php中文网

原创

haproxy高级配置需调整配置文件实现会话保持、健康检查增强、ssl卸载、流量分流及日志追踪:一、backend中配置cookie serverid并为server指定cookie值;二、启用httpchk并设置检查路径、host头、超时与阈值;三、合并证书并绑定443端口,通过acl重定向http至https;四、用acl匹配路径或请求头,结合use_backend实现分流;五、启用rsyslog日志、自定义log-format并注入x-request-id。

linux haproxy 负载均衡高级配置

如果您正在使用 Linux 系统部署 HAProxy 作为负载均衡器,但需要实现会话保持、健康检查增强、SSL 卸载或流量标记等高级功能,则需调整其配置文件中的特定参数。以下是实现这些高级配置的具体步骤:

一、启用基于 Cookie 的会话保持

通过在 backend 中插入 insert 或 rewrite 模式 cookie,可确保同一客户端后续请求被转发至同一后端服务器,避免应用层状态丢失。

1、编辑 HAProxy 配置文件,通常位于 /etc/haproxy/haproxy.cfg

2、在目标 backend 段落中添加如下行:cookie SERVERID insert indirect nocache

3、为每个 server 行追加 cookie 参数,例如:server web1 192.168.1.10:80 check cookie web1

4、重启服务:执行 systemctl restart haproxy

二、配置主动式 TCP 和 HTTP 健康检查

默认健康检查仅依赖 TCP 连通性,启用 HTTP 方式可验证后端应用实际响应能力,防止服务进程僵死但端口仍开放的情况。

1、在 backend 中添加 option httpchk GET /health 启用 HTTP 检查路径。

2、指定检查使用的 HTTP 版本与 Host 头:http-check send hdr Host www.example.com

3、设置检查间隔与超时:timeout check 5sinter 3s fall 3 rise 2

4、确认后端服务器的 /health 路径返回 HTTP 200 状态码且无重定向。

三、实现 SSL 卸载并强制 HTTPS 重定向

将 TLS 解密工作交由 HAProxy 承担,减轻后端服务器压力,同时统一管理证书;并通过 301 重定向确保所有 HTTP 流量转为加密连接。

1、将 PEM 格式证书与私钥合并为单个文件:cat example.com.crt example.com.key > /etc/haproxy/certs/example.com.pem

2、在 frontend 中绑定 SSL 端口并加载证书:bind *:443 ssl crt /etc/haproxy/certs/example.com.pem

3、添加 ACL 判断非 HTTPS 请求:acl is_http proto http

4、插入重定向规则:redirect scheme https if is_http

四、基于请求头或路径的流量分流

利用 HAProxy 的 ACL 机制,可根据 Host、User-Agent、URL 路径等字段将流量分发至不同 backend,实现灰度发布或 API 版本路由。

1、定义 ACL 匹配规则,例如:acl is_v2_path path_beg /api/v2/

2、定义另一 ACL 匹配移动端请求:acl is_mobile hdr_sub(User-Agent) Mobile

3、在 frontend 中使用 use_backend 指向对应 backend:use_backend api_v2 if is_v2_path

4、添加默认 backend:default_backend web_default

五、启用日志记录并关联请求 ID

开启详细访问日志有助于故障排查,而注入唯一 X-Request-ID 可贯穿整个请求链路,便于跨服务追踪。

1、在 global 段落中启用日志输出:log /dev/log local0log-tag haproxy

2、在 defaults 或 frontend 中添加日志格式:option httploglog-format %ci:%cp\ [%t]\ %ft\ %b/%s\ %Tq\ %Tw\ %Tc\ %Tr\ %Ta\ %ST\ %B\ %CC\ %CS\ %tsc\ %ac\ %fc\ %bc\ %sc\ %rc\ %sq\ %qq\ %hr\ %hs\ %{+Q}r

3、在 frontend 中插入请求 ID 头:http-request set-header X-Request-ID %[uuid(1)]

4、确保 rsyslog 已配置接收 local0 设备日志,并写入指定文件路径。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

836

2023.08.22

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

866

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

453

2024.06.27

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6489

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

365

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

440

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

482

2023.11.09

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

6

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.9万人学习

Git 教程
Git 教程

共21课时 | 3.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号