Pound - reverse HTTP proxy, load balancer und SSL wrapper

Einleitung

pound ist ein Reverse-Proxy und Load-Balancer sowie SSL-Wrapper. Die Software steht unter der GNU Public License und kann von der Homepage bezogen werden. Er kann Anfragen von Webclients an einen oder mehrere Webserver weiterleiten. Anhand der URL kann entschieden werden, an welchen Server der Request weitergeleitet wird. Auf diese Weise können hinter dem Reverse-Proxy auf ein und derselben IP-Adresse mehrere Webserver betrieben werden.

Konfiguration unter RedHat

Init-Skript

/etc/init.d/pound

#!/bin/bash
#
# pound        Starts pound Reverse Proxy
#
#
# chkconfig: 2345 88 12
# description: Syslog is the facility by which many daemons use to log \
# messages to various system log files.  It is a good idea to always \
# run pound.
### BEGIN INIT INFO
# Provides: $pound
### END INIT INFO

# Source function library.
. /etc/init.d/functions

[ -f /usr/sbin/pound ] || exit 0
[ -f /usr/sbin/poundctl ] || exit 0

# Source config
if [ -f /etc/sysconfig/pound ] ; then
        . /etc/sysconfig/pound
else
        POUND_CFG=/etc/pound.cfg
        POUND_OPTIONS="-v -f $POUND_CFG"
fi

[ -f $POUND_CFG ] || exit 0

RETVAL=0

umask 077

start() {
        echo -n $"Starting pound reverse proxy: "
        daemon pound $POUND_OPTIONS
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/pound
        return $RETVAL
}
stop() {
        echo -n $"Shutting down pound: "
        killproc pound
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/pound
        return $RETVAL
}

rhstatus() {
        status pound
}
restart() {
        stop
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        rhstatus
        ;;
  restart|reload)
        restart
        ;;
  condrestart)
        [ -f /var/lock/subsys/pound ] && restart || :
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart}"
        exit 1
esac

exit $?

pound.cfg

  • /etc/pound.cfg

einface konfiguration für einen dedizierten webserver

ListenHTTP
        Address 192.168.10.100
        Port 80

        Service
                BackEnd
                        Address 192.168.10.102
                        Port    80
                End
        End
End
  • Alle Anfragen, die auf 192.168.10.100 kommen, werden auf 192.168.10.102 umgeleitet.

Virtual Hosts

Pound unterstützt das Filtern nach Anfragen sowohl basierend auf der “Request-URL” als auch auf der Präsenz oder dem Fehlen von bestimmten Headern.

Angenommen wir haben einen internen Server 192.168.0.10, der www.server0.com bedienen soll und 192.168.0.11 der www.server1.com bedienen soll. Pound hört auf die Adresse 1.2.3.4 und teilt die Anfragen auf jeden Host auf.

virtual hosts example

        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

(add whatever else is necessary) or, if you want even safer filtering:

        ListenHTTP
            Address 1.2.3.4
            Port    80

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

                BackEnd
                    Address 192.168.0.10
                    Port    80
                End
            End

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

                BackEnd
                    Address 192.168.0.11
                    Port    80
                End
            End
        End

Diese Konfiguration ist lt. Hersteller nicht empfohlen, da virtual Hosts im Backend konfiguriert werden sollten, aber das Beispiel zeigt, dass es dennoch möglich ist.

 
wissen/proxy/pound-reverse-proxy-loadbalancer-ssl-wrapper-sanitizer-howto.txt · Zuletzt geändert: 05.09.2010 20:31
 
Recent changes RSS feed Donate Valid XHTML 1.0 Valid CSS Recent cached RSS feed cacert-signed web site: inhalt.serviert.de