Reverse Proxy and Load Balancer Configuration
NGINX
Nginx is a web server which can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. It is very easy to setup, configure and it has very good documentation.
The following example shows how to configure a load balancer, redirect all HTTP requests to HTTPS and how to proxy requests.
http { ... # Load balancer upstream registry-cluster { server api1.test.local:8000; server api2.test.local:8000; server api3.test.local:8000; } # Redirect all HTTP requests to HTTPS server { listen 80; server_name _; return 301 https://$host$request_uri; } # Proxy server { listen 443 ssl; ... location /registry { proxy_pass http://registry-cluster/registry-api/; } } }
Apache HTTP Server
Apache HTTP Server can act as a web server, reverse proxy and a load balancer.
To enable reverse proxy and load balancer features, uncomment these modules in httpd.conf
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
To redirect all HTTP requests to HTTPS you can use the following commands
<VirtualHost *:80> Redirect permanent / https://www.myhost.com/ </VirtualHost>
Example load balancer and proxy configuration is shown below
<Proxy balancer://registry-cluster> BalancerMember http://api1.test.local:8000 BalancerMember http://api2.test.local:8000 BalancerMember http://api3.test.local:8000 </Proxy> <VirtualHost *:443> ... ProxyPass /registry balancer://registry-cluster/registry-api/ ProxyPassReverse /registry balancer://registry-cluster/registry-api/ </VirtualHost>