# # This is a sample configuration. It illustrates how to separate static objects # traffic from dynamic traffic, and how to dynamically regulate the server load. # # 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 deliver the stats page. # global maxconn 10000 stats socket /var/run/haproxy.stat mode 600 level admin 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 name clear #bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem mode http log global option httplog option dontlognull monitor-uri /monitoruri maxconn 8000 timeout client 30s stats uri /admin/stats use_backend static if { hdr_beg(host) -i img } use_backend static if { path_beg /img /css } default_backend dynamic # The static backend backend for 'Host: img', /img and /css. backend static mode http balance roundrobin option prefer-last-server retries 2 option redispatch timeout connect 5s timeout server 5s 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 # the application servers go here backend dynamic mode http balance roundrobin retries 2 option redispatch timeout connect 5s timeout server 30s timeout queue 30s 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