---
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