Pound

in

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.

Installation
Create a directory to work in:

mkdir -p /extra/src
cd /extra/src

Download and unpack the source:
wget http://www.apsis.ch/pound/Pound-2.4.5.tgz
tar zxvf Pound-2.4.5.tgz
cd Pound-2.4.5

Configure it, then build and install:
./configure --with-ssl
make
make install

Basic Configuration
Create a config file /usr/local/etc/pound.cfg for a basic setup to proxy requests to an internal server:

## sample pound.cfg
#
User  "nobody"
Group  "nobody"
## Logging: (goes to syslog by default)
## 0 no logging
## 1 normal
## 2 extended
## 3 Apache-style (common log format)
LogLevel 1
## check backend every X secs:
Alive 30
## Run in foreground for daemontools startup
Daemon 0

ListenHTTP
  Address 1.2.3.4
  Port  80

  Service
    HeadRequire "Host: .*www.server0.com.*"

    BackEnd
      Address 192.168.0.10
      Port    80
    End
  End

  Service
    HeadRequire "Host: .*www.server1.com.*"

    BackEnd
      Address 192.168.0.11
      Port    80
    End
  End
End

Automatic Startup
We're going to use daemontools.
If you haven't already, install daemontools.

Create a directory for the Pound service:

mkdir -m 1755 /var/service/pound
cd /var/service/pound

Create the run script and make it executable:
echo '#!/bin/sh' > run
echo 'exec /usr/local/sbin/pound' >> run
chmod 755 run

Our log script comes from John Simpson:
mkdir -m 755 log
cd log
wget http://qmail.jms1.net/scripts/service-any-log-run
mv service-any-log-run run
chmod 755 run

Finally, add the service to daemontools by creating the symbolic link in /service
ln -s /var/service/pound /service/pound

Confirm that the service is running:
svstat /service/pound /service/pound/log