天天看點

haproxy代理配置

一、安裝 

192.168.1.128    代理機

192.168.1.129    後端web

192.168.1.130    後端web

# yum install gcc

# tar xf haproxy-1.8.3.tar.gz

# cd haproxy-1.8.3

# make TARGET=linux2628 PREFIX=/data/haproxy

# make install PREFIX=/data/haproxy

cp /data/haproxy/sbin/haproxy /usr/sbin/

cp ./examples/haproxy.init /etc/init.d/haproxy

<code>chmod</code> <code>755 /etc/init.d/haproxy</code>

<code></code>

<code>#建立系統賬号</code>

<code> useradd -r haproxy</code>

二、配置syslog

vim /etc/rsyslog.conf

$ModLoad    imudp

$UDPServerRun    514

local3.*                        /var/log/haproxy.log

配置haproxy配置檔案

vim /etc/haproxy/haproxy.cfg

#全局配置

global

#設定日志

log 127.0.0.1 local3 info

chroot /data/haproxy

#使用者與使用者組

user haproxy

group haproxy

#守護程序啟動

daemon

#最大連接配接數

maxconn 4000

#預設配置

defaults

log global

mode http

option httplog

option dontlognull

timeout connect 5000

timeout client 50000

timeout server 50000

#前端配置, http_front名稱可自定義

frontend http_front

bind *:80

#haproxy的狀态管理頁面,通過/haproxy?stats來通路

stats uri /haproxy?stats

default_backend http_back

#後端配置, http_back名稱課自定義

backend http_back

#負載均衡方式

#source 根據請求源IP

#static -rr 根據權重

# leastconn最少連接配接者先處理

#uri 根據請求的uri

# url_param 根據請求的url參數

# rdp-cookie 根據cookie(name)來鎖定并哈希每一次請求

# hdr(name) 根據HTTP請求頭來鎖定每一次HTTP請求

# roundrobin 輪詢方式

balance roundrobin

#設定健康檢查頁面

option httpchk GET /index.html

# 傳遞用戶端真實IP

option forwardfor header X-Forwarded-For

# inter 2000 健康檢查時間間隔2秒

# rise 3 檢測多少次才認為是正常的

# fall 3 失敗多少次才認為是不可用的

# weight 30 權重

server node1 192.168.194.129:80 check inter 2000 rise 3 fall 3 weight 30

server node2 192.168.194.130:80 check inter 2000 rise 3 fall 3 weight 30

三、重新開機服務

systemctl restart rsyslog

service haproxy start

四、haproxyacl規則

<code>frontend http_front</code>

<code>    </code><code>bind *:80</code>

<code>    </code><code>stats uri /haproxy?stats</code>

<code>    </code><code>#建立一個acl,is_http_back2是acl的名稱,可自定義,用于判斷主機名是否為www.back2.com</code>

<code>    </code><code>acl is_http_back2 hdr_end(host) www.back2.com</code>

<code>    </code><code>#通過正則判斷主機名中是否為bbs.back.com或forum.back.com</code>

<code>    </code><code>acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com)</code>

<code>    </code><code>#判斷ua是否為android</code>

<code>    </code><code>acl is_ua_android hdr_reg(User-Agent) -i android</code>

<code>    </code><code>#判斷主機名開頭是否為img.或css.或js.</code>

<code>    </code><code>acl is_host_static hdr_beg(host) -i img. css. js.</code>

<code>    </code><code>#判斷url路徑中是否有/bbs</code>

<code>    </code><code>acl is_path_bbs path_beg -i /bbs</code>

<code>    </code><code>#判斷url檔案結尾</code>

<code>    </code><code>acl is_php path_end -i .php</code>

<code>    </code><code>#通過正則判斷url中結尾以</code>

<code>    </code><code>acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$</code>

<code>    </code><code>#效果同上</code>

<code>    </code><code>acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif</code>

<code>    </code><code>#如果主機名是www.back2.com那麼就使用後端http_back2</code>

<code>    </code><code>use_backend http_back2 </code><code>if</code> <code>is_http_back2</code>

<code>    </code><code>#預設使用的後端</code>

<code>    </code><code>default_backend http_back</code>

<code>backend http_back</code>

<code>    </code><code>balance roundrobin</code>

<code>    </code><code>option httpchk GET /index.html</code>

<code>    </code><code>option forwardfor header X-Forwarded-For</code>

<code>    </code><code>server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30</code>

<code>backend http_back2</code>

<code>    </code><code>server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30</code>

五、web伺服器搭建 略....

     本文轉自小白的希望 51CTO部落格,原文連結:http://blog.51cto.com/haoyonghui/2065032,如需轉載請自行聯系原作者