[轉(zhuǎn)][筆記] 4. HAProxy 配置文件中的關(guān)鍵字參考

轉(zhuǎn)自(可能有一定的修改):
http://freeloda.blog.51cto.com/2033581/1294094

目錄:

  1. balance
  2. bind
  3. mode
  4. hash-type
  5. log
  6. maxconn
  7. default_backend
  8. server
  9. capture request header
  10. capture response header
  11. stats enable
  12. stats hide-version
  13. stats realm
  14. stats scope
  15. stats auth
  16. stats admin
  17. option httplog
  18. option logasap
  19. option forwardfor
  20. errorfile
  21. errorloc 和 errorloc302
  22. errorloc303
  23. cookie
  24. redirect

1.balance


格式:

balance <algorithm> [ <arguments> ]   
balance url_param <param> [check_post [<max_wait>]]

定義負(fù)載均衡算法鹃锈,可用于“defaults”弱匪、“l(fā)isten”和“backend”。<algorithm>用于在負(fù)載均衡場(chǎng)景中挑選一個(gè)server,其僅應(yīng)用于持久信息不可用的條件下或需要將一個(gè)連接重新派發(fā)至另一個(gè)服務(wù)器時(shí)。支持的算法有:

roundrobin:基于權(quán)重進(jìn)行輪叫,在服務(wù)器的處理時(shí)間保持均勻分布時(shí),這是最平衡攻谁、最公平的算法。此算法是動(dòng)態(tài)的弯予,
這表示其權(quán)重可以在運(yùn)行時(shí)進(jìn)行調(diào)整戚宦,不過,在設(shè)計(jì)上锈嫩,使用這種算法時(shí)受楼,支持最多 4095 個(gè)后端服務(wù)器。

所謂運(yùn)行時(shí)調(diào)整(on the fly)呼寸,比如我們做灰度發(fā)布時(shí)艳汽,讓一部分服務(wù)器下線,然后修改配置对雪。這里讓服務(wù)器下線河狐,
是通過 HAProxy 的狀態(tài)頁(yè),將其狀態(tài)切換為維護(hù)狀態(tài)瑟捣,就可以讓其下線了馋艺,然后修改配置即可。然后讓其上線迈套。

對(duì)于 roundrobin 算法捐祠,如果新上線一臺(tái)服務(wù)器,負(fù)載不是一下子全部分給新服務(wù)器桑李,而是慢慢讓其承擔(dān)負(fù)載踱蛀,這就是所謂
的“慢啟動(dòng)”。

static-rr:基于權(quán)重進(jìn)行輪叫贵白,與roundrobin類似率拒,但是為靜態(tài)方法,在運(yùn)行時(shí)調(diào)整其服務(wù)器權(quán)重不會(huì)生效禁荒;不過俏橘,
其在支持的后端服務(wù)器上沒有限制;

對(duì)于 static-rr 算法圈浇,如果新增一臺(tái)服務(wù)器寥掐,不會(huì)慢啟動(dòng),負(fù)載會(huì)立即讓其分擔(dān)磷蜀。

leastconn:新的連接請(qǐng)求被派發(fā)至具有最少連接數(shù)目的后端服務(wù)器召耘;在有著較長(zhǎng)會(huì)話時(shí)間的場(chǎng)景中推薦使用此算法,
如 LDAP褐隆、SQL 等污它,其并不太適用于較短會(huì)話的應(yīng)用層協(xié)議,如 HTTP庶弃;此算法是動(dòng)態(tài)的衫贬,可以在運(yùn)行時(shí)調(diào)整其權(quán)重;

source:將請(qǐng)求的源地址進(jìn)行 hash 運(yùn)算歇攻,并由后端服務(wù)器的權(quán)重總數(shù)相除后派發(fā)至某匹配的服務(wù)器固惯;這可以使得同一個(gè)
客戶端IP的請(qǐng)求始終被派發(fā)至某特定的服務(wù)器;不過缴守,當(dāng)服務(wù)器權(quán)重總數(shù)發(fā)生變化時(shí)葬毫,如某服務(wù)器宕機(jī)或添加了新的服務(wù)器,
許多客戶端的請(qǐng)求可能會(huì)被派發(fā)至與此前請(qǐng)求不同的服務(wù)器屡穗;常用于負(fù)載均衡無cookie功能的基于TCP的協(xié)議贴捡;其默認(rèn)為靜態(tài),
不過也可以使用 hash-type 修改此特性(有一種是動(dòng)態(tài))村砂;

相當(dāng)于 lvs 的 sh 算法烂斋,也相當(dāng)于 nginx 的 ip-hash 算法。建議用于 TCP 模式的調(diào)度础废,且不支持使用 cookie 插入
模式時(shí)使用汛骂。不適用于 HTTP 協(xié)議。

uri:對(duì)URI的左半部分(“?”標(biāo)記之前的部分)或整個(gè)URI進(jìn)行hash運(yùn)算色迂,并與服務(wù)器的總權(quán)重相除后派發(fā)至某匹配
的服務(wù)器香缺;這可以使得對(duì)同一個(gè)URI的請(qǐng)求總是被派發(fā)至某特定的服務(wù)器,除非服務(wù)器的權(quán)重總數(shù)發(fā)生了變化歇僧;

此算法常用于代理緩存(后端服務(wù)器是 Cache server)图张,可以提高緩存的命中率,或反病毒代理诈悍;

需要注意的是祸轮,此算法僅應(yīng)用于HTTP后端服務(wù)器場(chǎng)景;其默認(rèn)為靜態(tài)算法侥钳,不過也可以使用 hash-type 修改此特性
(有一種是動(dòng)態(tài))适袜;

支持兩個(gè)參數(shù),len 和 depth舷夺,比如 uri len 80 depth 4苦酱。不過這個(gè)很少用得到售貌。

URL 的語(yǔ)法格式:
    <scheme>://<user>:<password>@<host>:<port>/<paht>;<params>?<query>#<frag>
    
    ;<params>
        - ftp://downloads.magedu.com/pub/gnu;type=d
        - http://www.magedu.com/hammers;sale=false/index.html;graphics=ture
        
        params 通常是用來填寫表單的數(shù)據(jù)
        
    ?<query>
        - 有一些資源,比如數(shù)據(jù)庫(kù)服務(wù)疫萤,可以對(duì)其發(fā)起詢問或查詢颂跨,以縮小請(qǐng)求的資源類型的范圍。
          大致相當(dāng)于 where 查詢子句扯饶。

url_param:檢索每個(gè) HTTP GET 請(qǐng)求中恒削,URL 的請(qǐng)求參數(shù),通過 URL 的請(qǐng)求參數(shù)進(jìn)行調(diào)度尾序。即上面所說的 ;<params> 部分钓丰。
Apache 的基本認(rèn)證中,用戶名和密碼就是通過 ;<params> 發(fā)出去的每币。

這種調(diào)度方法携丁,常用于后端服務(wù)器需要對(duì)用戶進(jìn)行認(rèn)證的場(chǎng)景中。

如果找到了指定的參數(shù)且其通過等于號(hào)“=”被賦予了一個(gè)值脯爪,那么此值將被執(zhí)行 hash 運(yùn)算并被服務(wù)器的總權(quán)重相除后派發(fā)
至某匹配的服務(wù)器则北;

此算法可以通過追蹤請(qǐng)求中的用戶標(biāo)識(shí)進(jìn)而確保同一個(gè)用戶ID的請(qǐng)求將被送往同一個(gè)特定的服務(wù)器,除非服務(wù)器的總權(quán)重發(fā)
生了變化痕慢;如果某請(qǐng)求中沒有出現(xiàn)指定的參數(shù)或其沒有有效值尚揣,則使用輪叫算法對(duì)相應(yīng)請(qǐng)求進(jìn)行調(diào)度;此算法默認(rèn)為靜態(tài)的掖举,
不過其也可以使用hash-type修改此特性(有一種是動(dòng)態(tài))快骗;

hdr(<name>):對(duì)于每個(gè)HTTP請(qǐng)求,通過<name>指定的HTTP首部將會(huì)被檢索塔次;如果相應(yīng)的首部沒有出現(xiàn)或其沒有有效值方篮,
則使用輪叫算法對(duì)相應(yīng)請(qǐng)求進(jìn)行調(diào)度;如果后端服務(wù)器有很多虛擬主機(jī)励负,就可以基于 Host 首部字段做 hash藕溅。

其有一個(gè)可選選項(xiàng)“use_domain_only”,可在指定檢索類似Host類的首部時(shí)僅計(jì)算
域名部分(比如通過www.test.com來說继榆,僅計(jì)算test字符串的hash值)以降低hash算法的運(yùn)算量巾表;
比如有幾個(gè)虛擬主機(jī)都在一個(gè)真實(shí)服務(wù)器上,可以使用 use_domain_only 選項(xiàng):
    www.magedu.com
    web.magedu.com
    wwww.magedu.com 
        
此算法默認(rèn)為靜態(tài)的略吨,不過其也可以使用hash-type修改此特性(有一種是動(dòng)態(tài))集币;      


rdp-cookie      
rdp-cookie(name)
    用于 Windows 的遠(yuǎn)程桌面協(xié)議,基本很少用到翠忠。

如果對(duì) mysql 服務(wù)器進(jìn)行調(diào)度鞠苟,用什么算法?

leastconn

如果對(duì) ssh 服務(wù)器進(jìn)行調(diào)度,用什么算法当娱?

leastconn

如果對(duì)圖片服務(wù)器進(jìn)行調(diào)度吃既,使用什么算法?

rr趾访,因?yàn)榉?wù)器是直接訪問文件系統(tǒng)的态秧。

如果對(duì)圖片服務(wù)器之前的緩存服務(wù)器進(jìn)行調(diào)度,使用什么算法扼鞋?

uri

如果對(duì) web 動(dòng)態(tài)程序服務(wù)器進(jìn)行調(diào)度,使用什么算法愤诱?

一般需要保持會(huì)話云头,可用 source

但其實(shí)要保持會(huì)話的話,最理想的方法是基于 cookie 進(jìn)行調(diào)度淫半。

2.bind


格式:

bind [<address>]:<port_range> [, ...]   
bind [<address>]:<port_range> [, ...] interface <interface>

此指令僅能用于 frontend 和 listen 區(qū)段溃槐,用于定義一個(gè)或幾個(gè)監(jiān)聽的套接字。

<address>:可選選項(xiàng)科吭,其可以為主機(jī)名昏滴、IPv4地址、IPv6地址或*对人;省略此選項(xiàng)谣殊、將其指定為*或0.0.0.0時(shí),
將監(jiān)聽當(dāng)前系統(tǒng)的所有IPv4地址牺弄;

<port_range>:可以是一個(gè)特定的TCP端口姻几,也可是一個(gè)端口范圍(如5005-5010),代理服務(wù)器將通過指定的端口
來接收客戶端請(qǐng)求势告;需要注意的是蛇捌,每組監(jiān)聽的套接字<address:port>在同一個(gè)實(shí)例上只能使用一次,而且小于1024
的端口需要有特定權(quán)限的用戶才能使用咱台,這可能需要通過 uid 參數(shù)來定義络拌;

<interface>:指定物理接口的名稱,僅能在Linux系統(tǒng)上使用回溺;其不能使用接口別名春贸,而僅能使用物理接口名稱,而且
只有管理有權(quán)限指定綁定的物理接口馅而;

例如:

    listen http_proxy
        bind :80, :443
        bind 10.0.0.1:10080, 10.0.0.1:10443

3.mode


格式:

mode { tcp|http|health }

設(shè)定實(shí)例的運(yùn)行模式或協(xié)議祥诽。當(dāng)實(shí)現(xiàn)內(nèi)容交換時(shí),前端和后端必須工作于同一種模式(一般說來都是HTTP模式)瓮恭,否則將無法啟動(dòng)實(shí)例雄坪。

tcp:實(shí)例運(yùn)行于純 TCP 模式,在客戶端和服務(wù)器端之間將建立一個(gè)全雙工的連接,且不會(huì)對(duì)7層報(bào)文做任何類型的檢查维哈;
此為默認(rèn)模式绳姨,通常用于 SSL、SSH阔挠、SMTP 等應(yīng)用飘庄;

http:實(shí)例運(yùn)行于HTTP模式,客戶端請(qǐng)求在轉(zhuǎn)發(fā)至后端服務(wù)器之前將被深度分析购撼,所有不與 RFC 格式兼容的請(qǐng)求都會(huì)被拒絕跪削;

health:實(shí)例工作于health模式,其對(duì)入站請(qǐng)求僅響應(yīng)“OK”信息并關(guān)閉連接,且不會(huì)記錄任何日志信息;此模式將用于響應(yīng)
外部組件的健康狀態(tài)檢查請(qǐng)求屎鳍;目前來講,此模式已經(jīng)廢棄毫玖,因?yàn)閠cp或http模式中的monitor關(guān)鍵字可完成類似功能;

4. hash-type


格式:

hash-type <method>

定義用于將 hash 碼映射至后端服務(wù)器的方法凌盯;不能用于 frontend 區(qū)段付枫;可用方法有 map-based 和 consistent,
在大多數(shù)場(chǎng)景下推薦使用默認(rèn)的 map-based 方法驰怎。

map-based:hash表是一個(gè)包含了所有在線服務(wù)器的靜態(tài)數(shù)組阐滩。其hash值將會(huì)非常平滑,會(huì)將權(quán)重考慮在列砸西,
但其為靜態(tài)方法叶眉,對(duì)在線服務(wù)器的權(quán)重進(jìn)行調(diào)整將不會(huì)生效,這意味著其不支持慢速啟動(dòng)芹枷。此外衅疙,挑選服務(wù)器是
根據(jù)其在數(shù)組中的位置進(jìn)行的,因此鸳慈,當(dāng)一臺(tái)服務(wù)器宕機(jī)或添加了一臺(tái)新的服務(wù)器時(shí)饱溢,大多數(shù)連接將會(huì)被重新派
發(fā)至一個(gè)與此前不同的服務(wù)器上,對(duì)于緩存服務(wù)器的工作場(chǎng)景來說走芋,此方法不甚適用绩郎。

consistent:hash表是一個(gè)由各服務(wù)器填充而成的樹狀結(jié)構(gòu);基于hash鍵在hash樹中查找相應(yīng)的服務(wù)器時(shí)翁逞,
最近的服務(wù)器將被選中肋杖。此方法是動(dòng)態(tài)的,支持在運(yùn)行時(shí)修改服務(wù)器權(quán)重挖函,因此兼容慢速啟動(dòng)的特性状植。添加一個(gè)
新的服務(wù)器時(shí),僅會(huì)對(duì)一小部分請(qǐng)求產(chǎn)生影響,因此津畸,尤其適用于后端服務(wù)器為cache的場(chǎng)景振定。不過,此算法不
甚平滑肉拓,派發(fā)至各服務(wù)器的請(qǐng)求未必能達(dá)到理想的均衡效果后频,因此,可能需要不時(shí)的調(diào)整服務(wù)器的權(quán)重以獲得更
好的均衡性暖途。

推薦對(duì) cache servers 執(zhí)行負(fù)載均衡調(diào)度時(shí)的配置:

balance uri
hash-type consistent

5.log


格式:

log global   
log <address> <facility> [<level> [<minlevel>]]

為每個(gè)實(shí)例啟用事件和流量日志卑惜,因此可用于所有區(qū)段。每個(gè)實(shí)例最多可以指定兩個(gè)log參數(shù)丧肴,不過残揉,如果使用了“l(fā)og global”且"global"段已經(jīng)定了兩個(gè)log參數(shù)時(shí),多余了 log 參數(shù)將被忽略芋浮。

global:當(dāng)前實(shí)例的日志系統(tǒng)參數(shù)同"global"段中的定義時(shí),將使用此格式壳快;每個(gè)實(shí)例僅能定義一次“l(fā)og global”語(yǔ)句纸巷,且其沒有任何額外參數(shù);

<address>:定義日志發(fā)往的位置眶痰,其格式之一可以為<IPv4_address:PORT>瘤旨,其中的port為UDP協(xié)議端口,
默認(rèn)為514竖伯;格式之二為Unix套接字文件路徑存哲,但需要留心chroot應(yīng)用及用戶的讀寫權(quán)限;

<facility>:可以為syslog系統(tǒng)的標(biāo)準(zhǔn)facility之一七婴;

<level>:定義日志級(jí)別祟偷,即輸出信息過濾器,默認(rèn)為所有信息打厘;指定級(jí)別時(shí)修肠,所有等于或高于此級(jí)別的日志信息將會(huì)被發(fā)送;

6.maxconn


格式:

maxconn <conns>

設(shè)定一個(gè)前端的最大并發(fā)連接數(shù)户盯,因此嵌施,其不能用于backend區(qū)段。對(duì)于大型站點(diǎn)來說莽鸭,可以盡可能提高此值以便讓haproxy管理連接隊(duì)列吗伤,從而避免無法應(yīng)答用戶請(qǐng)求。當(dāng)然硫眨,此最大值不能超出“global”段中的定義足淆。此外,需要留心的是,haproxy會(huì)為每個(gè)連接維持兩個(gè)緩沖缸浦,每個(gè)緩沖的大小為8KB夕冲,再加上其它的數(shù)據(jù),每個(gè)連接將大約占用17KB的RAM空間裂逐。這意味著經(jīng)過適當(dāng)優(yōu)化后歹鱼,有著1GB的可用RAM空間時(shí)將能維護(hù) 40000-50000 并發(fā)連接。

如果為<conns>指定了一個(gè)過大值卜高,極端場(chǎng)景下弥姻,其最終占據(jù)的空間可能會(huì)超出當(dāng)前主機(jī)的可用內(nèi)存,這可能會(huì)帶來意想不到的結(jié)果掺涛;因此庭敦,將其設(shè)定了一個(gè)可接受值方為明智決定。其默認(rèn)為2000薪缆。

7.default_backend


格式:

default_backend <backend>

在沒有匹配的"use_backend"規(guī)則時(shí)秧廉,為實(shí)例指定使用的默認(rèn)后端,因此拣帽,其不可應(yīng)用于backend區(qū)段疼电。在"frontend"和"backend"之間進(jìn)行內(nèi)容交換時(shí),通常使用"use-backend"定義其匹配規(guī)則减拭;而沒有被規(guī)則匹配到的請(qǐng)求將由此參數(shù)指定的后端接收蔽豺。

<backend>:指定使用的后端的名稱;
使用案例:

use_backend     dynamic  if  url_dyn
use_backend     static   if  url_css url_img extension_img
default_backend dynamic

8.server


格式:

server <name> <address>[:port] [param*]

為后端聲明一個(gè)server拧粪,因此修陡,不能用于defaults和frontend區(qū)段。

<name>:為此服務(wù)器指定的內(nèi)部名稱可霎,其將出現(xiàn)在日志及警告信息中魄鸦;如果設(shè)定了"http-send-server-name",它
還將被添加至發(fā)往此后端服務(wù)器的請(qǐng)求首部中啥纸;

<address>:此服務(wù)器的的IPv4地址号杏,也支持使用可解析的主機(jī)名,只不過在啟動(dòng)時(shí)需要解析主機(jī)名至相應(yīng)的IPv4地址斯棒;

[:port]:指定將連接請(qǐng)求所發(fā)往的此服務(wù)器時(shí)的目標(biāo)端口盾致,其為可選項(xiàng);未設(shè)定時(shí)荣暮,將使用客戶端請(qǐng)求時(shí)的同一相端口庭惜;
當(dāng)前端綁定了多個(gè)端口時(shí)(參考 bind 指令),就不要指定端口了穗酥。

[param*]:為此服務(wù)器設(shè)定的一系參數(shù)护赊;其可用的參數(shù)非常多惠遏,具體請(qǐng)參考官方文檔中的說明,下面僅說明幾個(gè)常用的參數(shù)骏啰;

服務(wù)器或默認(rèn)服務(wù)器參數(shù) [param*]:

backup:設(shè)定為備用服務(wù)器节吮,僅在負(fù)載均衡場(chǎng)景中的其它 server 均不可用于啟用此 server;

check:?jiǎn)?dòng)對(duì)此server執(zhí)行健康狀態(tài)檢查判耕,其可以借助于額外的其它參數(shù)完成更精細(xì)的設(shè)定透绩,如:
    
    inter <delay>:設(shè)定健康狀態(tài)檢查的時(shí)間間隔,單位為毫秒壁熄,默認(rèn)為2000帚豪;也可以使用fastinter和downinter
    來根據(jù)服務(wù)器端狀態(tài)優(yōu)化此時(shí)間延遲;      

    rise <count>:設(shè)定健康狀態(tài)檢查中草丧,某離線的server從離線狀態(tài)轉(zhuǎn)換至正常狀態(tài)需要成功檢查的次數(shù)狸臣;      

    fall <count>:確認(rèn)server從正常狀態(tài)轉(zhuǎn)換為不可用狀態(tài)需要檢查的次數(shù);

cookie <value>:為指定server設(shè)定cookie值昌执,此處指定的值將在請(qǐng)求入站時(shí)被檢查烛亦,第一次為此值挑選
的server將在后續(xù)的請(qǐng)求中被選中,其目的在于實(shí)現(xiàn)持久連接的功能懂拾;

maxconn <maxconn>:指定此服務(wù)器接受的最大并發(fā)連接數(shù)此洲;如果發(fā)往此服務(wù)器的連接數(shù)目高于此處指定的值,
其將被放置于請(qǐng)求隊(duì)列委粉,以等待其它連接被釋放;

maxqueue <maxqueue>:設(shè)定請(qǐng)求隊(duì)列的最大長(zhǎng)度娶桦;

observe <mode>:通過觀察服務(wù)器的通信狀況來判定其健康狀態(tài)贾节,默認(rèn)為禁用,其支持的類型有“l(fā)ayer4”和“l(fā)ayer7”衷畦,
“l(fā)ayer7”僅能用于http代理場(chǎng)景栗涂;

redir <prefix>:?jiǎn)⒂弥囟ㄏ蚬δ埽瑢l(fā)往此服務(wù)器的GET和HEAD請(qǐng)求均以302狀態(tài)碼響應(yīng)祈争;需要注意的是斤程,
在prefix后面不能使用/,且不能使用相對(duì)地址菩混,以免造成循環(huán)忿墅;例如:server srv1 172.16.100.6:80 redir 
http://imageserver.test.com check

weight <weight>:權(quán)重,默認(rèn)為1沮峡,最大值為256疚脐,0表示不參與負(fù)載均衡;

執(zhí)行健康檢查的方式邢疙,有多種方式棍弄,對(duì)于 web 服務(wù)器望薄,使用 httpchk,對(duì)于 mysql 服務(wù)器可以使 mysql-check呼畸,
還有其他的 check 選項(xiàng)痕支,請(qǐng)參考官方文檔。

option httpchk 
    表示基于 HTTP 協(xié)議做7層檢查蛮原。比如請(qǐng)求主頁(yè)卧须,得到 200 響應(yīng)碼就可以

option httpchk <uri>    
    指定請(qǐng)求的 uri,默認(rèn)為 /

option httpchk <method> <uri>    
    指定請(qǐng)求的方法瞬痘,默認(rèn)方法為 OPTIONS故慈,因?yàn)檫@個(gè)方法不需要太多的處理,而且容易從日志中過濾出來框全。
    指定請(qǐng)求的 uri察绷,默認(rèn)為 /

option httpchk <method> <uri> <version>:不能用于 frontend 段
    指定請(qǐng)求的方法、uri津辩、版本拆撼,例如:

# Relay HTTPS traffic to Apache instance and check service availability
# using HTTP request "OPTIONS * HTTP/1.1" on port 80.
backend https_relay
    mode tcp
    option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www.test.com
    server apache1 192.168.1.1:443 check port 80
    
HAProxy 的工作模式是 tcp 模式。但要使用 http 檢查喘沿。這里要明確定義使用什么 method 進(jìn)行檢查闸度。
方法為 OPTIONS,uri 為 *蚜印,協(xié)議為 HTTP/1.1莺禁,因?yàn)?1.1 協(xié)議要求必須攜帶 Host首部,所以這里也
進(jìn)行了指定窄赋。

使用案例:

server first  172.16.100.7:1080 cookie first  check inter 1000
server second 172.16.100.8:1080 cookie second check inter 1000

9.capture request header


格式:

capture request header <name> len <length>

在日志中添加額外的信息哟冬。

捕獲并在日志中記錄指定的請(qǐng)求首部最近一次出現(xiàn)時(shí)的第一個(gè)值,僅能用于“frontend”和“l(fā)isten”區(qū)段忆绰。

捕獲的首部值使用花括號(hào){}括起來后添加進(jìn)日志中浩峡。如果需要捕獲多個(gè)首部值,它們將以指定的次序出現(xiàn)在日志文件中错敢,并以豎線“|”作為分隔符翰灾。

不存在的首部記錄為空字符串,最常需要捕獲的首部包括在虛擬主機(jī)環(huán)境中使用的“Host”稚茅、上傳請(qǐng)求首部中的“Content-length”纸淮、快速區(qū)別真實(shí)用戶和網(wǎng)絡(luò)機(jī)器人的“User-agent”,以及代理環(huán)境中記錄真實(shí)請(qǐng)求來源的“X-Forward-For”峰锁。

<name>:要捕獲的首部的名稱萎馅,此名稱不區(qū)分字符大小寫,但建議與它們出現(xiàn)在首部中的格式相同虹蒋,比如大寫首字母糜芳。
需要注意的是飒货,記錄在日志中的是首部對(duì)應(yīng)的值,而非首部名稱峭竣。

<length>:指定記錄首部值時(shí)所記錄的精確長(zhǎng)度塘辅,超出的部分將會(huì)被忽略。

可以捕獲的請(qǐng)求首部的個(gè)數(shù)沒有限制皆撩,但每個(gè)捕獲最多只能記錄64個(gè)字符扣墩。為了保證同一個(gè)frontend中日志格式的統(tǒng)一性,首部捕獲僅能在frontend中定義扛吞。

示例:
capture request header Host len 15
capture request header X-Forwarded-For len 15
capture request header Referer len 15

10.capture response header


格式:

capture response header <name> len <length>

在日志中添加額外的信息呻惕。

捕獲并記錄響應(yīng)首部,其格式和要點(diǎn)同請(qǐng)求首部滥比。

示例:
capture response header Content-length len 9
capture response header Location len 15

11.stats enable


格式:

啟用基于程序編譯時(shí)默認(rèn)設(shè)置的統(tǒng)計(jì)報(bào)告亚脆,不能用于“frontend”區(qū)段。只要沒有另外的其它設(shè)定盲泛,它們就會(huì)使用如下的配置:

stats uri   : /haproxy?stats
stats realm : "HAProxy Statistics"
stats auth  : no authentication
stats scope : no restriction

盡管“stats enable”一條就能夠啟用統(tǒng)計(jì)報(bào)告濒持,但還是建議設(shè)定其它所有的參數(shù),以免其依賴于默認(rèn)設(shè)定而
帶來非預(yù)期后果寺滚。下面是一個(gè)配置案例柑营。

backend public_www
  server websrv1 172.16.100.11:80
  stats enable
  stats hide-version
  stats scope   .
  stats uri     /haproxyadmin?stats
  stats realm   Haproxy\ Statistics
  stats auth    statsadmin:password
  stats auth    statsmaster:password

12.stats hide-version


格式:

stats hide-version

啟用統(tǒng)計(jì)報(bào)告并隱藏 HAProxy 版本報(bào)告,不能用于“frontend”區(qū)段村视。默認(rèn)情況下官套,統(tǒng)計(jì)頁(yè)面會(huì)顯示一些有用信息,
包括 HAProxy 的版本號(hào)蚁孔,然而虏杰,向所有人公開HAProxy的精確版本號(hào)是非常有風(fēng)險(xiǎn)的,因?yàn)樗軒椭鷲阂庥脩艨焖俣?br> 位版本的缺陷和漏洞勒虾。

盡管“stats hide-version”一條就能夠啟用統(tǒng)計(jì)報(bào)告,但還是建議設(shè)定其它所有的參數(shù)瘸彤,以免其依賴于默認(rèn)設(shè)定而
帶來非期后果修然。具體請(qǐng)參照“stats enable”一節(jié)的說明。

13.stats realm


格式:

stats realm <realm>

啟用統(tǒng)計(jì)報(bào)告质况,并且設(shè)置認(rèn)證領(lǐng)域愕宋,不能用于“frontend”區(qū)段。

haproxy在讀取 realm 時(shí)會(huì)將其視作一個(gè)單詞结榄,因此中贝,中間的任何空白字符都必須使用反斜線進(jìn)行轉(zhuǎn)義。
此參數(shù)僅在與“stats auth”配合使用時(shí)有意義臼朗。

<realm>:實(shí)現(xiàn)HTTP基本認(rèn)證時(shí)顯示在瀏覽器中的領(lǐng)域名稱邻寿,用于提示用戶輸入一個(gè)用戶名和密碼蝎土。

盡管“stats realm”一條就能夠啟用統(tǒng)計(jì)報(bào)告,但還是建議設(shè)定其它所有的參數(shù)绣否,以免其依賴于默認(rèn)設(shè)定而帶來
非期后果誊涯。具體請(qǐng)參照“stats enable”一節(jié)的說明。

示例:
# public access (limited to this backend only)
backend public_www
server srv1 192.168.0.1:80
stats enable
stats hide-version
stats scope .
stats uri /admin?stats
stats realm Haproxy\ Statistics
stats auth admin1:AdMiN123
stats auth admin2:AdMiN321

# internal monitoring access (unlimited)
backend private_monitoring
    stats enable
    stats uri     /admin?stats
    stats refresh 5s

14.stats scope


格式:

stats scope { <name> | "." }

啟用統(tǒng)計(jì)報(bào)告并限定報(bào)告的區(qū)段蒜撮,不能用于 “frontend” 區(qū)段暴构。

當(dāng)指定此語(yǔ)句時(shí),統(tǒng)計(jì)報(bào)告將僅顯示其列舉出區(qū)段的報(bào)告信息段磨,所有其它區(qū)段的信息將被隱藏取逾。如果需要顯示多個(gè)區(qū)段的統(tǒng)計(jì)報(bào)告,此語(yǔ)句可以定義多次苹支。需要注意的是砾隅,區(qū)段名稱檢測(cè)僅僅是以字符串比較的方式進(jìn)行,它不會(huì)真檢測(cè)指定的區(qū)段是否真正存在沐序。

<name>:可以是一個(gè)“l(fā)isten”琉用、“frontend”或“backend”區(qū)段的名稱,而“.”則表示 stats scope
語(yǔ)句所定義的當(dāng)前區(qū)段策幼。

盡管“stats scope”一條就能夠啟用統(tǒng)計(jì)報(bào)告邑时,但還是建議設(shè)定其它所有的參數(shù),以免其依賴于默認(rèn)設(shè)定而
帶來非期后果特姐。下面是一個(gè)配置案例晶丘。

backend private_monitoring
    stats enable
    stats uri     /haproxyadmin?stats
    stats refresh 10s

15.stats auth


格式:

stats auth <user>:<passwd>

啟用帶認(rèn)證的統(tǒng)計(jì)報(bào)告功能并授權(quán)一個(gè)用戶帳號(hào),其不能用于“frontend”區(qū)段唐含。

<user>:授權(quán)進(jìn)行訪問的用戶名浅浮;
<passwd>:此用戶的訪問密碼,明文格式捷枯;

此語(yǔ)句將基于默認(rèn)設(shè)定啟用統(tǒng)計(jì)報(bào)告功能滚秩,并僅允許其定義的用戶訪問,其也可以定義多次以授權(quán)多個(gè)用戶帳號(hào)淮捆∮粲停可以結(jié)合“stats realm”參數(shù)在提示用戶認(rèn)證時(shí)給出一個(gè)領(lǐng)域說明信息。在使用非法用戶訪問統(tǒng)計(jì)功能時(shí)攀痊,
其將會(huì)響應(yīng)一個(gè)“401 Forbidden”頁(yè)面桐腌。

其認(rèn)證方式為HTTP Basic認(rèn)證,密碼傳輸會(huì)以明文方式進(jìn)行苟径,因此案站,配置文件中也使用明文方式存儲(chǔ)以說明其非
保密信息故此不能相同于其它關(guān)鍵性帳號(hào)的密碼。

盡管“stats auth”一條就能夠啟用統(tǒng)計(jì)報(bào)告棘街,但還是建議設(shè)定其它所有的參數(shù)蟆盐,以免其依賴于默認(rèn)設(shè)定
而帶來非期后果承边。

16.stats admin


stats admin { if | unless } <cond>

開啟管理功能。

在指定的條件滿足時(shí)啟用統(tǒng)計(jì)報(bào)告頁(yè)面的管理級(jí)別功能舱禽,它允許通過web接口啟用或禁用服務(wù)器炒刁,
不過,基于安全的角度考慮誊稚,統(tǒng)計(jì)報(bào)告頁(yè)面應(yīng)該盡可能為只讀的翔始。

此外,如果啟用了HAProxy的多進(jìn)程模式里伯,啟用此管理級(jí)別將有可能導(dǎo)致異常行為城瞎。

目前來說,POST 請(qǐng)求方法被限制于僅能使用緩沖區(qū)減去保留部分之外的空間疾瓮,因此脖镀,服務(wù)器列表不能過長(zhǎng),否則狼电,
此請(qǐng)求將無法正常工作蜒灰。因此,建議一次僅調(diào)整少數(shù)幾個(gè)服務(wù)器肩碟。下面是兩個(gè)案例强窖,第一個(gè)限制了僅能在本機(jī)打開報(bào)告頁(yè)面時(shí)啟用管理級(jí)別功能,第二個(gè)定義了僅允許通過認(rèn)證的用戶使用管理級(jí)別功能削祈。

backend stats_localhost
    stats enable
    stats admin if LOCALHOST
backend stats_auth
    stats enable
    stats auth  haproxyadmin:password
    stats admin if TRUE

17.option httplog


格式:

option httplog [ clf ]

啟用記錄 HTTP 請(qǐng)求翅溺、會(huì)話狀態(tài)和計(jì)時(shí)器的功能。

clf:使用CLF格式來代替HAProxy默認(rèn)的HTTP格式髓抑,通常在使用僅支持CLF格式的特定日志分析器時(shí)才需要使用此格式咙崎。

默認(rèn)情況下,日志輸入格式非常簡(jiǎn)陋吨拍,因?yàn)槠鋬H包括源地址褪猛、目標(biāo)地址和實(shí)例名稱,而“option httplog”參數(shù)將會(huì)使得日志格式變得豐富許多羹饰,其通常包括但不限于HTTP請(qǐng)求握爷、連接計(jì)時(shí)器、會(huì)話狀態(tài)严里、連接數(shù)、捕獲的首部及cookie追城、“frontend”刹碾、“backend”及服務(wù)器名稱,當(dāng)然也包括源地址和端口號(hào)等座柱。

18.option logasap


格式:

option logasap   
no option logasap

啟用或禁用提前將HTTP請(qǐng)求記入日志迷帜,不能用于“backend”區(qū)段物舒。

默認(rèn)情況下,HTTP請(qǐng)求是在請(qǐng)求結(jié)束時(shí)進(jìn)行記錄戏锹,以便能將其整體傳輸時(shí)長(zhǎng)和字節(jié)數(shù)記入日志冠胯,由此,傳較大的對(duì)象時(shí)锦针,其記入日志的時(shí)長(zhǎng)可能會(huì)略有延遲荠察。
“option logasap” 參數(shù)能夠在服務(wù)器發(fā)送 complete 首部時(shí)即時(shí)記錄日志,只不過奈搜,此時(shí)將不記錄整體傳輸時(shí)長(zhǎng)和字節(jié)數(shù)悉盆。此情形下,
捕獲“Content-Length”響應(yīng)首部來記錄傳輸?shù)淖止?jié)數(shù)是一個(gè)較好選擇馋吗。下面是一個(gè)例子焕盟。

listen http_proxy 0.0.0.0:80
    mode http
    option httplog
    option logasap
    log 172.16.100.9 local2

19.option forwardfor


格式:

option forwardfor [ except <network> ] [ header <name> ] [ if-none ]

允許在發(fā)往后端服務(wù)器的請(qǐng)求首部中插入“X-Forwarded-For”首部。

<network>:可選參數(shù)宏粤,當(dāng)指定時(shí)脚翘,源地址為匹配至此網(wǎng)絡(luò)中的請(qǐng)求都禁用此功能。

<name>:可選參數(shù)绍哎,可使用一個(gè)自定義的首部来农,如“X-Client”來替代“X-Forwarded-For”。
有些獨(dú)特的web服務(wù)器的確需要用于一個(gè)獨(dú)特的首部蛇摸。

if-none:僅在此首部不存在時(shí)才將其添加至請(qǐng)求報(bào)文中备图。

HAProxy工作于反向代理模式,其發(fā)往服務(wù)器的請(qǐng)求中的客戶端IP均為HAProxy主機(jī)的地址而非真正客戶端的地址赶袄,這會(huì)使得服務(wù)器端的日志信息記錄不了真正的請(qǐng)求來源揽涮。

“X-Forwarded-For”首部則可用于解決此問題。HAProxy可以向每個(gè)發(fā)往服務(wù)器的請(qǐng)求上添加此首部饿肺,并以客戶端IP為其value蒋困。

需要注意的是,HAProxy工作于隧道模式敬辣,其僅檢查每一個(gè)連接的第一個(gè)請(qǐng)求雪标,因此,僅第一個(gè)請(qǐng)求報(bào)文被附加此首部溉跃。如果想為每一個(gè)請(qǐng)求都附加此首部村刨,請(qǐng)確保同時(shí)使用了這幾個(gè)option:

option httpclose
option forceclose
option http-server-close

下面是一個(gè)例子。

frontend www
    mode http
    option forwardfor except 127.0.0.1

20.errorfile


格式:

errorfile <code> <file>

在用戶請(qǐng)求不存在的頁(yè)面時(shí)撰茎,返回一個(gè)頁(yè)面文件給客戶端而非由haproxy生成的錯(cuò)誤代碼嵌牺;可用于所有段中。

<code>:指定對(duì)HTTP的哪些狀態(tài)碼返回指定的頁(yè)面;這里可用的狀態(tài)碼有200逆粹、400募疮、403、408僻弹、500阿浓、502、503和504蹋绽;
<file>:指定用于響應(yīng)的頁(yè)面文件芭毙;

例如:

errorfile 400 /etc/haproxy/errorpages/400badreq.http
errorfile 403 /etc/haproxy/errorpages/403forbid.http
errorfile 503 /etc/haproxy/errorpages/503sorry.http

21.errorloc 和 errorloc302


格式:

errorloc <code> <url>   
errorloc302 <code> <url>    

請(qǐng)求錯(cuò)誤時(shí),返回一個(gè)HTTP重定向至某URL的信息蟋字;可用于所有配置段中稿蹲。

<code>:指定對(duì)HTTP的哪些狀態(tài)碼返回指定的頁(yè)面;這里可用的狀態(tài)碼有200鹊奖、400苛聘、403、408忠聚、500设哗、502、503和504两蟀;

<url>:Location首部中指定的頁(yè)面位置的具體路徑网梢,可以是在當(dāng)前服務(wù)器上的頁(yè)面的相對(duì)路徑,也可以使用絕對(duì)路徑赂毯;
需要注意的是战虏,如果URI自身錯(cuò)誤時(shí)產(chǎn)生某特定狀態(tài)碼信息的話,有可能會(huì)導(dǎo)致循環(huán)定向党涕;

需要留意的是烦感,這兩個(gè)關(guān)鍵字都會(huì)返回302狀態(tài)嗎,這將使得客戶端使用同樣的HTTP方法獲取指定的URL膛堤,對(duì)于非GET方法的場(chǎng)景(如POST)來說會(huì)產(chǎn)生問題手趣,因?yàn)榉祷乜蛻舻腢RL是不允許使用GET以外的其它方法的。如果的確有這種問題肥荔,可以使用errorloc303來返回303狀態(tài)碼給客戶端绿渣。

22.errorloc303


errorloc303 <code> <url>

請(qǐng)求錯(cuò)誤時(shí),返回一個(gè)HTTP重定向至某URL的信息給客戶端燕耿;可用于所有配置段中中符。

<code>:指定對(duì)HTTP的哪些狀態(tài)碼返回指定的頁(yè)面;這里可用的狀態(tài)碼有400誉帅、403淀散、408谭期、500、502吧凉、503和504;

<url>:Location首部中指定的頁(yè)面位置的具體路徑踏志,可以是在當(dāng)前服務(wù)器上的頁(yè)面的相對(duì)路徑阀捅,也可以使用絕對(duì)路徑;
需要注意的是针余,如果URI自身錯(cuò)誤時(shí)產(chǎn)生某特定狀態(tài)碼信息的話饲鄙,有可能會(huì)導(dǎo)致循環(huán)定向;

例如:

backend webserver
  server 172.16.100.6 172.16.100.6:80 check maxconn 3000 cookie srv01
  server 172.16.100.7 172.16.100.7:80 check maxconn 3000 cookie srv02
  errorloc 403 /etc/haproxy/errorpages/sorry.htm
  errorloc 503 /etc/haproxy/errorpages/sorry.htm

23. cookie


cookie <name> [ rewrite | insert | prefix ] [ indirect ] [ nocache ]
[ postonly ] [ preserve ] [ httponly ] [ secure ]
[ domain <domain> ]* [ maxidle <idle> ] [ maxlife <life> ]

在 backend 中激活基于 cookie 的持久連接圆雁。

適用于:default, listen, backend

參數(shù)說明

<name>:
指定 cookie 的名字忍级。該 cookie 可能被監(jiān)測(cè)、修改伪朽、插入信息轴咱。這個(gè) cookie 由響應(yīng)報(bào)文的 Set-Cookie header 發(fā)送給客戶端(只發(fā)送一次)×忆蹋客戶端收到該 cookie 后朴肺,在其請(qǐng)求報(bào)文的 Cookie header 中攜帶該 cookie。

應(yīng)特別注意坚洽,不要使該 cookie 的名字與其他 cookie 沖突戈稿。
不同的 backends 應(yīng)使用不同的 cookie name

在一個(gè) HTTP backend 中之只能定義一個(gè) persistent cookie。

例如我們?cè)谝粋€(gè) backend 中定義:
    cookie SRV insert indirect nocache

在該 backend 中讶舰,cookie 的值在 server 語(yǔ)句中定義:
    server first  10.1.1.1:1080 cookie first  check inter 1000
    server second 10.1.1.2:1080 cookie second check inter 1000

如果第一次請(qǐng)求調(diào)度至第一個(gè)服務(wù)器鞍盗,cookie 的值為 first;如果調(diào)度至第二個(gè)服務(wù)器跳昼,cookie 的值為 second般甲;

Set-Cookie 首部的內(nèi)容包含:SRV=first/second,客戶端收到之后庐舟,以后向該域名路徑發(fā)送的請(qǐng)求欣除,都會(huì)攜帶有包含 
SRV=first/second 的 cookie。根據(jù) cookie 的值為 first or second挪略,請(qǐng)求被調(diào)度至第一個(gè)或者
第二個(gè)服務(wù)器历帚。這就是基于 cookie 的連接保持。這時(shí)是根據(jù) cookie 的值來調(diào)度的杠娱,不是基于算法挽牢,即使
backend 的算法是 roundrobin 算法,也不會(huì)進(jìn)行輪詢調(diào)度摊求。

24. redirect


語(yǔ)法:

redirect location <loc> [code <code>] <option> [{if | unless} <condition>]
redirect prefix   <pfx> [code <code>] <option> [{if | unless} <condition>]
redirect scheme   <sch> [code <code>] <option> [{if | unless} <condition>]

使用范圍: frontend, backend, listen

If/unless the condition is matched, the HTTP request will lead to a redirect
response. If no condition is specified, the redirect applies unconditionally.

如果/除非 條件滿足禽拔,返回重定向給客戶端;如果未指定條件,表示直接返回重定向睹栖。

參數(shù)說明:

<loc>

redirect location <loc>硫惕;

使 Location 首部的值等于 loc;

<pfx>

redirect prefix <pfx>;

構(gòu)建 Location 首部為:<pfx> + 完整的 URI path + query string野来;

  • 如果使用了 "drop-query" 選項(xiàng)恼除,表示不添加 query string;

  • 如果 <pfx> = /曼氛,那么不需要重新構(gòu)建 URI豁辉;適用的場(chǎng)景:重定向至同一個(gè) URL,但是插入一個(gè) cookie舀患;

<sch>

redirect scheme <sch>徽级;

構(gòu)建 Location 首部為:<sch> + "://" + 第一個(gè) Host 首部字段的值 + URI path + query sting

  • 如果使用了 "drop-query" 選項(xiàng),表示不添加 query string聊浅;

  • 如果沒有給出 URI path餐抢,或者 path = *,則使用 "/" 替代 URI path狗超;

  • 如果找不到 Host 首部字段弹澎,則返回空的 Host 首部,大部分瀏覽器將其解釋為:重定向到同一個(gè) host努咐;

常用于將 HTTP 重定向至 HTTPS

<code>

<code> 是可選的苦蒿;用于指定重定向的狀態(tài)碼,不同的重定向碼表示不同的重定向類型渗稍,支持使用 301, 302, 303, 307 and 308佩迟;

302 是默認(rèn)狀態(tài)碼;

301 表示:"Moved permanently" 永久重定向竿屹;瀏覽器可以將這個(gè) Location 進(jìn)行緩存

302 表示:"Moved temporarily" 臨時(shí)重定向报强;瀏覽器不應(yīng)該緩存這個(gè) Location

303 表示:與 302 相同,但瀏覽器會(huì)使用 GET 方法獲取 location

307 表示:與 302 相同拱燃,但會(huì)明確讓瀏覽器使用同一個(gè) method

308 表示:與 301 相同秉溉,但會(huì)明確讓瀏覽器使用同一個(gè) method

<option>

選項(xiàng)是用于調(diào)整重定向的行為的:

"drop-query"

用于 prefix-based redirection 和 sch-based redirection,表示設(shè)置 Location 字段時(shí)碗誉,不添加 query string召嘶;

使用場(chǎng)景舉例:將用戶導(dǎo)向一個(gè)非安全的頁(yè)面;

"append-slash"

這個(gè)選項(xiàng)和 drop-query 合用時(shí)哮缺,可將不是以 '/' 重定向至同一個(gè) Location 弄跌,但在尾部添加上 '/';

這個(gè)修改可確保搜索引擎只看到一個(gè) URL尝苇;

這時(shí)最好使用 301 作為狀態(tài)碼铛只;

"set-cookie NAME[=value]"

在重定向響應(yīng)中添加一個(gè) "Set-Cookie" 首部字段埠胖;

這使得用戶的下一次訪問會(huì)攜帶 cookie,利用這一點(diǎn)可以防御某些類型的 DoS 攻擊淳玩;

因?yàn)闆]有添加其他的 cookie 選項(xiàng)直撤,所以這里設(shè)置的 cookie 是唯一的 cookie,這是其成為一個(gè) session cookie蜕着;

注意谊惭,對(duì)于瀏覽器而言,一個(gè)不帶 = 符號(hào)的 cookie name侮东,和帶了 = 符號(hào)的 cookie name 是不同的;

"clear-cookie NAME[=]"

在重定向響應(yīng)中添加一個(gè) "Set-Cookie" 首部字段豹芯,但 "Max-Age" 屬性被設(shè)置為 0悄雅,瀏覽器會(huì)刪除這個(gè) cookie;

使用場(chǎng)景舉例:訪問了一個(gè)登出頁(yè)面 logout page铁蹈,表示要退出訪問宽闲,這時(shí)為安全考慮最好刪除 cookie,以免被人盜取握牧,這對(duì)于提高安全性是有好處的容诬;

特別要注意,"clear-cookie NAME" 和 "clear-cookie NAME=" 是不同的沿腰;前者不會(huì)刪除這樣的 cookie: "NAME=value"览徒,必須使用 "clear-cookie NAME=" 刪除這樣的 cookie,這一點(diǎn)不同是因?yàn)闉g覽器而產(chǎn)生的颂龙,因?yàn)闉g覽器對(duì)其進(jìn)行不同的處理习蓬。

示例1:Move the login URL only to HTTPS. 強(qiáng)制用戶使用 HTTPS 協(xié)議訪問登陸頁(yè)面

acl clear      dst_port  80
acl secure     dst_port  8080
acl login_page url_beg   /login
acl logout     url_beg   /logout
acl uid_given  url_reg   /login?userid=[^&]+
acl cookie_set hdr_sub(cookie) SEEN=1

redirect prefix   https://mysite.com set-cookie SEEN=1 if !cookie_set # 如果用戶訪問時(shí)不攜帶 cookie,讓其重定向使用 HTTPS 訪問措嵌,并且為其設(shè)置 cookie
redirect prefix   https://mysite.com           if login_page !secure # 訪問登陸頁(yè)面躲叼,但不是訪問的安全端口,重定向使用 HTTPS 協(xié)議
redirect prefix   http://mysite.com drop-query if login_page !uid_given # 訪問登陸頁(yè)面企巢,但沒有給出 userid 信息枫慷,讓用戶重新填寫登陸信息
redirect location http://mysite.com/           if !login_page secure # 訪問非登陸頁(yè)面,但卻要求使用安全端口浪规,這沒必要蛛壳,讓用戶重定向到普通頁(yè)面
redirect location / clear-cookie USERID=       if logout # 登出之后龙优,讓瀏覽器刪除 cookie USERID=value,且重定向到首頁(yè)

示例2:Send redirects for request for articles without a '/'.

acl missing_slash path_reg ^/article/[^/]*$
redirect code 301 prefix / drop-query append-slash if missing_slash # 不改變 URI,改變默認(rèn)狀態(tài)碼為 301朴摊,刪除 query string,并在 URI 尾部添加 "/"

示例3:Redirect all HTTP traffic to HTTPS when SSL is handled by haproxy.
acl is_ssl dst_port 8080
redirect scheme https if !is_ssl

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稿饰,一起剝皮案震驚了整個(gè)濱河市舔稀,隨后出現(xiàn)的幾起案子元镀,更是在濱河造成了極大的恐慌,老刑警劉巖霎桅,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栖疑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡滔驶,警方通過查閱死者的電腦和手機(jī)遇革,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揭糕,“玉大人萝快,你說我怎么就攤上這事≈牵” “怎么了揪漩?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吏口。 經(jīng)常有香客問我奄容,道長(zhǎng),這世上最難降的妖魔是什么产徊? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任昂勒,我火速辦了婚禮,結(jié)果婚禮上舟铜,老公的妹妹穿的比我還像新娘戈盈。我一直安慰自己,他們只是感情好谆刨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布奕谭。 她就那樣靜靜地躺著,像睡著了一般痴荐。 火紅的嫁衣襯著肌膚如雪血柳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天生兆,我揣著相機(jī)與錄音难捌,去河邊找鬼。 笑死鸦难,一個(gè)胖子當(dāng)著我的面吹牛根吁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播合蔽,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼击敌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了拴事?” 一聲冷哼從身側(cè)響起沃斤,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤圣蝎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后衡瓶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徘公,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年哮针,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了关面。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡十厢,死狀恐怖等太,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛮放,我是刑警寧澤澈驼,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站筛武,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏挎塌。R本人自食惡果不足惜徘六,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望榴都。 院中可真熱鬧待锈,春花似錦、人聲如沸嘴高。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拴驮。三九已至春瞬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間套啤,已是汗流浹背宽气。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留潜沦,地道東北人萄涯。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像唆鸡,于是被迫代替她去往敵國(guó)和親涝影。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 互聯(lián)網(wǎng)架構(gòu)基礎(chǔ)知識(shí) 一争占、網(wǎng)站常見架構(gòu) 負(fù)載層 頁(yè)面緩存層 web層 數(shù)據(jù)層 二燃逻、運(yùn)維法則 緩存為王 盡量在前端(緩...
    魏鎮(zhèn)坪閱讀 4,816評(píng)論 0 9
  • 目錄: HAProxy是什么 HAProxy的核心能力和關(guān)鍵特性 HAProxy的安裝和運(yùn)行 使用HAProxy搭...
    kelgon閱讀 79,837評(píng)論 9 159
  • HAProxy簡(jiǎn)介HAProxy配置ACL配置TCP轉(zhuǎn)發(fā)SSL轉(zhuǎn)發(fā) 一序目、HAProxy簡(jiǎn)介: (一)HAProxy...
    哈嘍別樣閱讀 1,531評(píng)論 0 0
  • 一.HAProxy介紹 HAProxy: 是法國(guó)人Willy Tarreau開發(fā)的一個(gè)開源軟件,是 一款應(yīng)對(duì)客戶端...
    楠人幫閱讀 1,109評(píng)論 0 2
  • Haproxy是既可以工作在7層也能工作在4層的反代工具.Haproxy的功能: 路由HTTP請(qǐng)求到后端服務(wù)器,基...
    uangianlap閱讀 1,549評(píng)論 0 1