cookie <name> [ rewrite | insert | prefix ] [ indirect ] [ nocache ] [ postonly ] [ preserve ] [ httponly ] [ secure ] [ domain <domain> ]* [ maxidle <idle> ] [ maxlife <life> ]
除了backend 都可用 在给用户的相应报文中插入cookie
<name>:新插入cookie的名称
rewirte:重写;后端服务器可能已经有cookie 改写
insert:插入;
prefix:前缀;
http://cbonte.github.io/haproxy-dconv/1.5/configuration.html#4-cookie
例1 基于cookie的session sticky的实现:(会话保持)
backend websrvs
cookie WEBSRV insert nocache indirect
server srv1 172.16.100.6:80 weight 2 check rise 1 fall 2 maxconn 3000 cookie srv1
server srv2 172.16.100.7:80 weight 1 check rise 1 fall 2 maxconn 3000 cookie srv2
***********************************************************
统计接口启用相关的参数:
默认配置
stats enable 启用统计页;基于默认的参数启用stats page;
- stats uri : /haproxy?stats 统计数据使用的url
- stats realm : "HAProxy\ Statistics" 域
- stats auth : no authentication
- stats scope : no restriction
stats auth <user>:<passwd>:认证时的账号和密码,可使用多次;
stats realm <realm>:认证时的realm;
stats uri <prefix> 自定义stats page uri
stats refresh <delay> 设定自动刷新时间间隔;
stats admin { if | unless } <cond> 启用stats page中的管理功能
配置示例:
listen stats
bind :9099
stats enable
stats realm HAPorxy\ Stats\ Page
stats auth admin:admin 状态页面的账号密码
stats admin if TRUE 表示认证成功
***********************************************************
option forwardfor [ except <network> ] [ header <name> ] [ if-none ]
在由haproxy发往后端主机的请求报文中添加“X-Forwarded-For”首部,其值前端客户端的地址;用于向后端主发送真实的客户端IP;
[ except <network> ]:请求报请来自此处指定的网络时不予添加此首部;
[ header <name> ]:使用自定义的首部名称,而非“X-Forwarded-For”;
***********************************************************
errorfile <code> <file> 返回错误信息(只有后端服务器才知道),这里的错误码信息并不是值后端主机页面不存在,而大多是权限或重定向错误.因为haproxy本身并不知道后端页面信息
<code>:is the HTTP status code. Currently, HAProxy is capable of generating codes 200, 400, 403, 408, 500, 502, 503, and 504.
<file>:designates a file containing the full HTTP response.
示例:
errorfile 400 /etc/haproxy/errorfiles/400badreq.http
errorfile 408 /dev/null # workaround Chrome pre-connect bug
errorfile 403 /etc/haproxy/errorfiles/403forbid.http
errorfile 503 /etc/haproxy/errorfiles/503sorry.http
***********************************************************
errorloc <code> <url> 重新定义url 而不是文件
***********************************************************
errorloc302 <code> <url> 直接把错误也重定向到另一个url 错误码也能修改
***********************************************************
reqadd <string> [{if | unless} <cond>] 在请求报文尾部加新的http的首部信息 (添加给后端服务器的)
rspadd <string> [{if | unless} <cond>] 发往客户端的响应报文....
reqdel <search> [{if | unless} <cond>] 在请求报文的http首部中删除 指定的首部
reqidel <search> [{if | unless} <cond>] (ignore case) 在请求报文的http首部中删除 指定的首部(不区分大小写)
rspdel <search> [{if | unless} <cond>] 请发往客户端的http首部中删除 指定首部
rspidel <search> [{if | unless} <cond>] (ignore case) 在发往客户端的http首部中删除指定首部 (不区分大小写)
*********************************************************** <search>支持正则表达式模式
timeout client <timeout> 客户端超时时常 (意思是已经建立链接,但客户端没有发送请求) 默认时间为毫秒
timeout server <timeout> 服务端超时失常 (意思是和后端建立链接,但没有发送响应报文) 默认单位毫秒
timeout http-keep-alive <timeout>持久连接的持久时长; 与客户端一侧的长连接 毫秒单位
timeout http-request <timeout> 当后端或客户端处于某种原因(导致步骤不一致时) 能保持的时常 毫秒
timeout connect <timeout> 建立tcp链接的等待时长
timeout client-fin <timeout> 客户端半关闭连接的超时时长(tcp会话四次断开过程中的等待时间)
timeout server-fin <timeout> 服务器端半关闭连接的超时失长
***********************************************************
use_backend <backend> [{if | unless} <condition>] 在条件满足时(不满足) 时,使用指定的backend (条件由acl控制)
当符合指定的条件时使用特定的backend;主要实现动静分离功能
path_beg 从字符前端匹配 path_end 从字符后端匹配
***********************************************************
block { if | unless } <condition> 基于ACL条件满足时阻止一个7层请求
例1
***********************************************************
http-request { allow | deny } [ { if | unless } <condition> ]
基于7层的访问控制机制
http://cbonte.github.io/haproxy-dconv/1.5/configuration.html#timeout%20http-request***********************************************************
tcp-request connection {accept|reject} [{if | unless} <condition>]
基于4层请求所做的控制
示例:,(跟block参数并无太多区别,只是block只能拒绝)
listen ssh
bind :22022
balance leastconn
acl invalid_src src 172.16.200.2
tcp-request connection reject if invalid_src
mode tcp
server sshsrv1 172.16.100.6:22 check
server sshsrv2 172.16.100.7:22 check backup