本文目录:
1.1 配置文件说明
1.2 简单配置示例
1.3 全局配置参数
1.4. proxy配置段和常用配置选项
1.4.1 http事务模型相关设置
1.4.2 balance
1.4.3 hash-type
1.4.4 bind
1.4.5 mode
1.4.6 log
1.4.7 capture request header 和 capture response header
1.4.8 maxconn
1.4.9 use_backend
1.4.10 default_backend
1.4.11 server和default-server
1.4.12 option httpcheck
1.4.13 stats相关
1.4.14 option forwardfor
1.4.15 错误页面相关
1.4.16 cookie和redispatch
1.4.17 reqadd和rspadd
1.4.18 超时时间相关
1.4.19 http协议过滤:http-request
1.4.20 tcp请求和响应过滤
1.5 ACL
1.5.1 ACL语法
1.5.2 ACL实现动静分离示例
haproxy几乎每个大版本都提供了官方手册(内容几乎都相同),手册非常详细。例如haproxy 1.7版本关于配置文件的官方手册:。
haproxy的灵魂在于配置文件,配置文件重点在于前端(frontend)和后端(backend)的定制。全局选项(global)的配置将默认提供的稍微修改下即可。
可以使用haproxy命令行检查配置文件语法是否正确。
haproxy -f /etc/haproxy/phaproxy.cfg -c
或者使用sysv脚本的check参数。
service haproxy check
1.1 配置文件说明HAProxy在启动之前会解析配置文件,有3处配置信息来源:
最优先处理来自haproxy命令行给出的参数。
"global"配置段的参数,设定为全局参数。
代理配置段。包括defaults,listen,frontend和backend段。
另外haproxy配置文件引入了引号和转义符:反斜线表示转义符;单引号表示强引用;双引号表示弱引用。如果字符串内需要输入空格,则空格需要进行转义或者通过引号包围,不转义时在配置文件中表示分隔符。
如:
\ 标记一个空白字符以区分它的本义和用作分隔符时的空白符
\# to mark a hash and differentiate it from a comment
\\ to use a backslash
\' to use a single quote and differentiate it from strong quoting
\" to use a double quote and differentiate it from weak quoting
下面几种情况是等价的:
log-format %{+Q}o\ %t\ %s\ %{-Q}r
log-format "%{+Q}o %t %s %{-Q}r"
log-format '%{+Q}o %t %s %{-Q}r'
log-format "%{+Q}o %t"' %s %{-Q}r'
log-format "%{+Q}o %t"' %s'\ %{-Q}r
在配置文件中,一些包含了数值的参数表示时间,如timeout。这些值默认以毫秒为单位,但也可以使用其它的时间单位后缀。
us: 微秒(microseconds),即1/1000000秒;
ms: 毫秒(milliseconds),即1/1000秒;
s: 秒(seconds);
m: 分钟(minutes);
h:小时(hours);
d: 天(days);
1.2 简单配置示例以下是一个简单的配置文件,该配置文件代理模式为http,frontend定义的是监听在前端所有网卡的80端口上,此文件中只定义了一个后端服务器组backend,该backend只包含一台监听在127.0.0.1:8000的服务器。在haproxy的术语中,frontend表示的是监听套接字,用于等待客户端的连接。
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
default_backend web_servers
backend web_servers
server server1 127.0.0.1:8000 maxconn 32
如果使用listen配置方式替换backend和frontend,则更简单,以下是等价配置:
global
daemon
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen http-in
bind *:80
server server1 127.0.0.1:8000 maxconn 32
全局配置参数设定haproxy进程运行环境,一般和操作系统指定的值有关,配置正确后一般都不会去修改。全局配置参数一般都有对应的命令行选项。
1.进程管理及安全相关的参数。