Saturday, 22 December 2018

How to configure HAProxy to redirect multiple domains



Follow the below steps to configure HAproxy to redirect multiple domains.
Step 1: Install the haproxy package if already not installed:

[root@linuxcnf ~]# yum install haproxy

Step 2: Take a backup of original configuration file of haproxy:

[root@linuxcnf ~]# cp -p /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-ORI

Step 3: Remove existing contents from the file and put the below contents:

[root@linuxcnf ~]# vi /etc/haproxy/haproxy.cfg-ORI
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile      /var/run/haproxy.pid
    maxconn   4000
    user        haproxy
    group      haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                       global
    option                   httplog
    option                   dontlognull
    option                   http-server-close
    option forwardfor     except 127.0.0.0/8
    option                   redispatch
    retries                   3
    timeout http-request   10s
    timeout queue          1m
    timeout connect        10s
    timeout client          1m
    timeout server         1m
    timeout http-keep-alive 10s
    timeout check          10s
    maxconn                3000

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend http-in
        bind *:80
        acl host_blog hdr(host) -i blog.linuxcnf.com
        acl host_www hdr(host) -i www.linuxcnf.com
        use_backend blog_site if host_blog
        use_backend www_site if host_www

#---------------------------------------------------------------------
# Backend for Blog Server
#---------------------------------------------------------------------
backend blog_site
        balance leastconn
        option httpclose
        option forwardfor
        cookie JSESSIONID prefix
        server blog1 192.168.43.18:9001 cookie A check
#---------------------------------------------------------------------
# Backend for www Server
#---------------------------------------------------------------------
backend www_site
        balance leastconn
        option httpclose
        option forwardfor
        cookie JSESSIONID prefix
        server www1 192.168.43.19:9002 cookie A check
#---------------------------------------------------------------------         
[root@linuxcnf ~]#

Note: Change the configuration as per environments i.e. domain URLs, backend server IP addresses and ports.

Step 4: Finally, start haproxy service and enable it on system startup.

[root@linuxcnf ~]# service haproxy start
[root@linuxcnf ~]# chkconfig haproxy on

Step 5: verify the configuration using domain URLs.

3 comments: