haproxy代理配置

1、安裝 
php

192.168.1.128    代理機css

192.168.1.129    後端webhtml

192.168.1.130    後端web前端



# yum install gccnode

# wget http://pkgs.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.8.3.tar.gz/sha512/6118ccbcfe07d96c2cce1a78c30db9c428f8b64e64fc3f5660392a501ecbaefdc5b10bea2f65c6bb3d8e7763b3e17db4ee34e13f689474f8243b52250e212600/haproxy-1.8.3.tar.gz linux


# tar xf haproxy-1.8.3.tar.gzandroid

# cd haproxy-1.8.3web

# make TARGET=linux2628 PREFIX=/data/haproxyvim

# make install PREFIX=/data/haproxy後端

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

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

chmod 755 /etc/init.d/haproxy


#建立系統帳號

 useradd -r haproxy



2、配置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



3、重啓服務

systemctl restart rsyslog

service haproxy start


4、haproxyacl規則

frontend http_front
     bind *:80
     stats uri /haproxy?stats
 
     #建立一個acl,is_http_back2是acl的名稱,可自定義,用於判斷主機名是否爲www.back2.com
     acl is_http_back2 hdr_end(host) www.back2.com
     #經過正則判斷主機名中是否爲bbs.back.com或forum.back.com
     acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com)
     #判斷ua是否爲android
     acl is_ua_android hdr_reg(User-Agent) -i android
     #判斷主機名開頭是否爲img.或css.或js.
     acl is_host_static hdr_beg(host) -i img. css. js.
     #判斷url路徑中是否有/bbs
     acl is_path_bbs path_beg -i /bbs
     #判斷url文件結尾
     acl is_php path_end -i .php
     #經過正則判斷url中結尾以
     acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$
     #效果同上
     acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif
 
     #若是主機名是www.back2.com那麼就使用後端http_back2
     use_backend http_back2  if  is_http_back2
 
     #默認使用的後端
     default_backend http_back
 
backend http_back
     balance roundrobin
     option httpchk GET /index.html
     option forwardfor header X-Forwarded-For
     server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
 
backend http_back2
     balance roundrobin
     option httpchk GET /index.html
     option forwardfor header X-Forwarded-For
     server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30

5、web服務器搭建 略....

相關文章
相關標籤/搜索