# # This is a sample configuration # haproxy >= 1.3.5 required. # # It listens on 192.168.1.10:80, and directs all requests for Host 'img' or # URIs starting with /img or /css to a dedicated group of servers. URIs # starting with /admin/stats are directed to a backend dedicated to statistics. # TCP splicing is used on static objects to relieve the process from the heavy # job. # global maxconn 10000 log 127.0.0.1 local0 uid 200 gid 200 chroot /var/empty daemon # The public 'www' address in the DMZ frontend public bind 192.168.1.10:80 mode http log global option httplog option dontlognull option httpclose option tcpsplice monitor-uri /monitoruri maxconn 8000 clitimeout 30000 # Host: will use a specific keyword soon reqisetbe ^Host:\ img static # The URI will use a specific keyword soon reqisetbe ^[^\ ]*\ /(img|css)/ static reqisetbe ^[^\ ]*\ /admin/stats stats default_backend dynamic # The static backend backend for 'Host: img', /img and /css. # TCP splicing is enabled on this backend because we don't expect to do # anything interesting with static objects, but we know they can eat much # bandwidth. backend static mode http balance roundrobin option tcpsplice contimeout 5000 srvtimeout 5000 redispatch retries 2 option httpchk HEAD /favicon.ico server statsrv1 192.168.1.8:80 check inter 1000 server statsrv2 192.168.1.9:80 check inter 1000 backend dynamic mode http balance roundrobin contimeout 30000 srvtimeout 30000 redispatch retries 2 option httpchk HEAD /login.php cookie DYNSRV insert indirect nocache fullconn 4000 # the servers will be used at full load above this number of connections server dynsrv1 192.168.1.1:80 minconn 50 maxconn 500 cookie s1 check inter 1000 server dynsrv2 192.168.1.2:80 minconn 50 maxconn 500 cookie s2 check inter 1000 server dynsrv3 192.168.1.3:80 minconn 50 maxconn 500 cookie s3 check inter 1000 server dynsrv4 192.168.1.4:80 minconn 50 maxconn 500 cookie s4 check inter 1000 backend stats log global mode http stats uri / balance roundrobin