配置示例:
frontend www bind *:80 mode http option httplog option forwardfor option httpclose log global #acl host_www hdr_dom(host) -i www.zb.com #acl host_img hdr_dom(host) -i img.zb.com #use_backend htmpool if host_www #use_backend imgpool if host_img default_backend htmpool
這部分通過frontend 關鍵字定義了一個名為“www”的前端虛擬節點,下面介紹每個選項的含義。
bind:此選項只能在frontend 和listen 部分進行定義,用於定義一個或幾個監聽的套接字。bind 的使用格式為:
bind [<address>:<port_range>] interface <interface>
其中,address 為可選選項,其可以為主機名或IP 地址,如果將其設置為“*”或“0.0.0.0”,將監聽當前系統的所有IPv4 地址。
port_range 可以是一個特定的TCP 端口,也可是一個端口范圍,小於1024 的端口需要有特定權限的用戶才能使用。
interface 為可選選項,用來指定網絡接口的名稱,只能在Linux 系統上使用。
option httplog:在默認情況下,haproxy 日志是不記錄HTTP 請求的,這樣很不方便HAProxy 問題的排查與監控。通過此選項可以啟用日志記錄HTTP 請求。
option forwardfor:如果后端服務器需要獲得客戶端的真實IP,就需要配置此參數。由於HAProxy 工作於反向代理模式,因此發往后端真實服務器的請求中的客戶端IP 均為HAProxy 主機的IP,而非真正訪問客戶端的地址,這就導致真實服務器端無法記錄客戶端真正請求來源的IP,而“X-Forwarded-For”則可用於解決此問題。
通過使用“forwardfor”選項,HAProxy 就可以向每個發往后端真實服務器的請求添加“X-Forwarded-For”記錄,這樣后端真實服務器日志可以通過“X-Forwarded-For”信息來記錄客戶端來源IP。
option httpclose:此選項表示在客戶端和服務器端完成一次連接請求后,HAProxy 將主動關閉此TCP 連接。這是對性能非常有幫助的一個參數。
log global:表示使用全局的日志配置,這里的“global”表示引用在HAProxy 配置文件global 部分中定義的log 選項配置格式。
default_backend:#指定默認的后端服務器池,也就是指定一組后端真實服務器,而這些真實服務器組將在backend 段進行定義。這里的htmpool 就是一個后端服務器組。