How to Configure HAProxy Load Balancer Updated on July 16, 2021 by InMotion Hosting Contributor 2 Minutes, 48 Seconds to Read HAProxy load balancer (community edition) is a versatile, customizable solution for building a highly available (HA) cloud infrastructure. Short for “highly available Proxy,” HAProxy is used by a long list of reputable organizations including Fedora, MaxCDN, OpenShift, and Reddit for complex setups. There’s even a pfSense firewall module for HAProxy integration. If Apache load balancer and balancer manager don’t satisfy your needs, HAProxy might be the right solution for you. Below we’ll cover the steps to develop a simple HTTP proxy server with HAProxy on a Linux cloud server. Install HAProxy Load BalancerConfigure HAProxyStart HAProxy Install HAProxy Load Balancer SSH into your server and install HAProxy from your Linux distribution repos. CentOS: sudo yum install haproxy Debian: sudo apt-get install haproxy Configure HAProxy Edit the HAProxy configuration file with your command-line editor of choice – Nano, Vim, Emacs, etc. nano /etc/haproxy/haproxy.cfg There’s plenty of example data in there already. We’ll only cover the lines you need to edit for basic HTTP load balancing. Change the bind port number to the necessary port for your HAProxy load balancer setup. This should likely be port 80 (HTTP), 443 (HTTPS/SSL), or the port for whatever web applications you’ll be using on backend servers . Ensure the port you specify here is open in your firewall – CSF, Firewalld, UFW, etc. bind :5000 If you’re using the HAProxy load balancer with a free or paid SSL certificate, add two separate lines enforcing a 301 redirect for all insecure (HTTP) requests. We’ve covered how to install free SSL certificates on Ubuntu Server with Certbot. bind *:443 ssl crt /path-to-ssl-certs/example.pemredirect scheme https code 301 if !{ ssl_fc } Customize your name for the backend configuration from the default “app.” This will become important if you create multiple load balancers within HAProxy. As of now, they simply need to match in both sections of your configuration file. default_backend app backend app There are multiple load balancing algorithms available within HAProxy. The default option is roundrobin. The two other most common ones are leastconn(ections) and source (IP address). Round robin should suffice for smaller setups. balance roundrobin At the bottom, create a line for each backend server in your setup. You can identify servers by domain, server hostname, or IP address. Remember to add a colon and the port number afterwards. server httpsite example.com:80 check server httpssite 1.2.3.4:443 check ssl verify none Here’s a condensed version of everything above you can easily paste into your HAProxy configuration file. frontend main bind *:80 default_backend lb backend lb balance roundrobin server httpsite example.com:80 check server httpssite 1.2.3.4:443 check ssl verify none Start HAProxy Start the HAProxy service. systemctl start haproxy Enable HAProxy to restart upon system reboot. systemctl enable haproxy Afterwards, open your load balancer URL in a web browser. It should redirect to one of the backend servers. When you refresh the page, it should show the next backend server. If not, test with a private browsing session. Whenever you make changes to your HAProxy load balancer, restart the server application with Systemd. systemctl restart haproxy Learn more server administration tasks from our Cloud Server Hosting Product Guide. Experience full control over your server environment and deploy the best operating and management systems that fit your needs with our reliable Cloud VPS Hosting! Share this Article InMotion Hosting Contributor Content Writer InMotion Hosting contributors are highly knowledgeable individuals who create relevant content on new trends and troubleshooting techniques to help you achieve your online goals! More Articles by InMotion Hosting Related Articles How to Change Your Server SSH Port cPanel vs Other Web Hosting Control Panels How To Manage SSH Keys for Your Server Install Webmin on Ubuntu 20.04 How to Re-OS Your Cloud Server in AMP Choosing Vesta Control Panel How to Log into Webmin and Update Passwords Adding a User and Domain to Vesta Control Panel How to Add a BIMI Record on Cloud Server Hosting How to Install PHP on a Linux Cloud Server