The Pound program is a reverse proxy, load balancer and HTTPS front-end for Web server(s). Pound was developed to enable distributing the load among several Web-servers and to allow for a convenient SSL wrapper for those Web servers that do not offer it natively. Pound is distributed under the GPL -- no warranty, it's free to use, copy and give away.
Pound is not a Web server: by itself, Pound serves no content -- it contacts the back-end server(s) for that purpose.
Pound is not a Web accelerator: no caching is done -- every request is passed "as is" to a back-end server.
This is a basic configuration, for each backend we want to load balance we'll need to add a service within that listener.
You'll notice we're removing incoming headers called X-Forwarded-For, this is to make sure someone doesn't try to craft them in to a request and abuse them.
Here we have added 2 BackEnds that connect to port 80, it's all pretty simple. Add as many as you want.
Pound will pass correct HTTP headers through to the backends so you configure those just like you normally would.
this should only be done on a private network.
So, we'll create an HTTPS listened like the one above but with extra options.
You'll notice a few changes here, first we tell the HTTPS listener to listen on port 443 -- SSL port.
We add a header to pass back to our backend servers called X-Forwarded-Proto, this is so that on our backend we can inspect this header and use it if required to know we're secure.
We also remove incoming headers called X-Forwarded-Proto and X-Forwarded-For, this is to make sure someone doesn't try to craft them in to a request and abuse them.
Finally is the certificate which needs to be a PEM file with all certificates and keys within it and without passphrases.
Change it from startup=0 to startup=1. Before doing this, Pound will refuse to start.