--- title: "12. 其他配置段" linkTitle: "12. 其他配置段" weight: 230 description: "跟踪、用户、邮件发送器、错误、环形缓冲区、证书、ACME、全局健康检查" icon: fa-solid fa-ellipsis module: [HAPROXY] categories: [参考] aliases: - /haproxy/configuration/other-sections/ - /docs/haproxy/configuration/other-sections/ - /haproxy/other-sections/ upstream_link: "https://docs.haproxy.org/3.4/configuration.html" upstream_name: "HAProxy 3.4 Configuration Manual" upstream_ref: "v3.4.4, chapter 12" --- 以下所述段落使用频率较低,通常仅支持少量参数。它们之间不存在隐式关联。所有段均通过单一关键字启动。在 "global" 段之前禁止出现任何此类段。部分段的支持可能受构建选项限制(例如与 SSL 相关的任何功能)。 ## 12.1. 跟踪 {#section-12-1} 为调试目的,可激活 HAProxy 子系统上的追踪功能。该功能将输出特定子系统的调试消息,是诊断问题的强力工具。可通过 CLI 动态配置追踪。也可在配置文件中通过专用 "traces" 段预先定义部分设置。有关追踪的更多详情,请参阅管理指南。该功能属于开发者工具,适用于复杂调试会话。其输出信息极为详尽,且存在性能开销,使用时应谨慎。由于其为开发者工具,本段配置不保证向后兼容性。 **`traces`** ```haproxy traces ``` 开始一个新的 traces 段。可使用一个或多个 "traces" 段。所有指令按声明顺序求值,后声明的指令会覆盖先前的指令。 **`trace `** ```haproxy trace ``` 配置在 "trace" 子系统中。每个配置项均可在管理手册中找到,并遵循完全相同的语法。"trace" 命令所产生的任何输出,均会在本段的解析阶段发出。大多数情况下,这些输出为错误和警告信息,但某些不完整的命令可能会列出允许的选择项。该命令并非用于常规使用,通常仅在复杂调试会话中由开发者建议使用。请注意,根据追踪级别和详细程度,启用追踪可能会严重降低整体性能。有关语句语法的详细信息,请参阅管理手册。 示例: ```text ring buf1 size 10485760 # 10MB format timed backing-file /tmp/h1.traces ring buf2 size 10485760 # 10MB format timed backing-file /tmp/h2.traces traces trace h1 sink buf1 level developer verbosity complete start now trace h2 sink buf1 level developer verbosity complete start now ``` ## 12.2. 用户列表 {#section-12-2} 可以控制对前端、后端或监听段以及 HTTP 统计信息的访问,仅允许经过身份认证和授权的用户访问。为此,必须至少创建一个用户列表,并定义用户。 **`userlist `** ```haproxy userlist ``` 创建名为 `` 的新用户列表。可使用多个独立的用户列表,以分别存储不同客户的认证与授权数据。 **`group [users ,,(...)]`** ```haproxy group [users ,,(...)] ``` 将组 `` 添加到当前用户列表中。也可通过在 "users" 关键字后使用以逗号分隔的用户名列表,将用户附加到该组。 **`user [password|insecure-password ]`** ```haproxy user [password|insecure-password ] [groups ,,(...)] ``` 将用户 `` 添加至当前用户列表。可使用加密(安全)或非加密(不安全)密码。加密密码通过 crypt(3) 函数进行评估,具体支持的算法取决于系统的功能,例如基于现代 Glibc 的 Linux 系统支持 MD5、SHA-256、SHA-512,以及经典的基于 DES 的密码加密方法。 请注意:使用加密密码可能导致显著增加的 CPU 使用率,具体取决于请求数量以及所使用的算法。对于任何哈希变体,每个请求的密码都必须在与配置文件中指定的值进行比较之前,通过所选算法进行处理。当前大多数算法均故意设计为计算成本较高,以抵御暴力破解攻击。它们并非仅对明文密码进行一次加盐哈希,而是重复数千次。这可能迅速成为 HAProxy 整体 CPU 消耗的主要因素,甚至可能导致应用程序崩溃! 为降低哈希函数的高 CPU 使用率,一种方法是减少哈希函数(SHA 系列算法)的迭代轮数,或在算法支持的情况下降低 "cost" 值。 需要注意,使用 musl(例如 Alpine Linux)实现时,计算哈希值的性能通常低于其 glibc 对应实现,因此也建议考虑此因素。 所有密码均被视为普通参数,因此受 [section 2.2](/zh/docs/haproxy/configuration-basics/#section-2-2) 引用与转义规则约束。建议对密码使用单引号。 示例: ```text userlist L1 group G1 users tiger,scott group G2 users xdb,scott user tiger password $6$k6y3o.eP$JlKBx9za9667qe4(...)xHSwRv6J.C0/D7cV91 user scott insecure-password 'elgato' user xdb insecure-password 'hello' userlist L2 group G1 group G2 user tiger password $6$k6y3o.eP$JlKBx(...)xHSwRv6J.C0/D7cV91 groups G1 user scott insecure-password 'elgato' groups G1,G2 user xdb insecure-password 'hello' groups G2 ``` 请注意,两个列表在功能上完全相同。 ## 12.3. 邮件发送器 {#section-12-3} 当服务器状态发生变化时,可发送电子邮件警报。若已配置邮件警报,将向 mailers 段中配置的每个邮件发送器发送邮件。邮件通过 Lua 发送(参见 examples/lua/mailers.lua)。 **`mailers `** ```haproxy mailers ``` 创建一个名为 `` 的邮件列表。该邮件列表为独立段,可被一个或多个代理引用。 **`mailer :`** ```haproxy mailer : ``` 在 mailers 段中定义一个邮件发送器。 示例: ```text global # mailers.lua file as provided in the git repository # adjust path as needed lua-load examples/lua/mailers.lua mailers mymailers mailer smtp1 192.168.0.1:587 mailer smtp2 192.168.0.2:587 backend mybackend mode tcp balance roundrobin email-alert mailers mymailers email-alert from test1@horms.org email-alert to test2@horms.org server srv1 192.168.0.30:80 server srv2 192.168.0.31:80 ``` **`timeout mail