HAProxy配置文件详解和ACL功能

本文目录:
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

1.3 全局配置参数

全局配置参数设定haproxy进程运行环境,一般和操作系统指定的值有关,配置正确后一般都不会去修改。全局配置参数一般都有对应的命令行选项。

1.进程管理及安全相关的参数。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8859b78c5f683a11c8d486dc0ccf0c06.html