<> ----- Wir verwenden [[http://apsis.ch/pound|Pound]] als verteilenden Proxy. = Installation = [[http://apsis.ch/pound|Pound]] ist als [[http://packages.debian.org/cgi-bin/search_packages.pl?keywords=pound&searchon=names&subword=1&version=all&release=all|Debian-Paket]] verfügbar. Bei der kompilierten Version ist leider eine Option deaktiviert, die für die Verwendung mit [[FaxeSubVersion| Subversion]] benötigt wird. Falls du also keinen Subversion-Server hinter dem Proxy einrichten willst, dann genügt ein einfaches `apt-get install pound`. Andernfalls kannst du folgendermaßen ein debian-Paket mit der aktivierten Option erstellen (idealerweise auf einem anderen Rechner, um keinen Compiler auf dem Server installieren zu müssen): * eventuell zur ''/etc/apt/sources.list'' eine ''deb-src''-Quelle hinzufügen, also beispielsweise: {{{ deb-src http://ftp.de.debian.org/debian testing main}}} * nun geht es los: {{{ apt-get update apt-get install apt-build libssl-dev apt-build source pound cd /var/cache/apt-build/build/pond-1.?.? # den Parameter, den wir fuer subversion brauchen, aktivieren sed -i "s#\(./configure -.*\)#\1 --enable-msdav#" debian/rules }}} * das "sed" schreibt in "debian/rules" das enable-msdav ans ende der configure Zeile, falls was schief läuft geht das auch per vi ;) * in die ''/etc/apt/apt-build.conf'' solltest du nun den Prozessortyp des Ziel-Servers eintragen (`man gcc` könnte dir weiterhelfen) - in unserem Fall: {{{ mcpu = -mcpu=pentium2 }}} * jetzt kannst du das Paket bauen lassen: {{{ dpkg-buildpackage }}} Dabei wurde neben einer Warnung, dass du das Paket nicht signieren konntest, das fertige Debian-Paket im darüberliegenden Verzeichnis erstellt. Das kannst du auf dem Server per `dpkg -i pound-*.deb` installieren. * Das System auf dem du baust, sollte die gleichen Paketversionen haben wie das Serversystem (in unserem Fall also debian/stable). Insbesondere die libc6 usw. ergeben sonst bei der pound Installation Probleme. = Einrichtung = Um die verschlüsselten und unverschlüsselten Daten gut zu trennen, verwenden wir zwei Instanzen von ''pound''. Dies lässt sich sehr einfach realisieren, indem du zwei Konfigurationsdateien unter ''/etc/pound/'' erstellst. Wir verwenden die beiden folgenden Dateien: * [[attachment:ssl.cfg]] * [[attachment:no-ssl.cfg]] Für Subversion ist es wichtig, zwei Optionen zu aktivieren: {{{ ExtendedHTTP 1 WebDAV 1 }}} Den anhängigen Servern könnte folgende Option helfen: {{{ HTTPSHeaders 0 "Front-End-Https: on" }}} Anschließend solltest du den Start von ''pound'' in der ''/etc/default/pound'' aktivieren. = Probleme = == Web-Anwendungen verlangen SSL == Folgende Programme benötigen eine SSL-Verbindung, um vollständig zu funktionieren: * [[http://squirrelmail.org/|SquirrelMail]] für die Eingabe einer gpg-Passphrase * [[http://inter7.com/?page=sqwebmail|SqWebMail]] ebenfalls für die gpg-Passphrase Mit der apache-Direktive `SetEnv HTTPS on` kannst du diesen Programmen eine SLL-Verbindung vorgaukeln. Dazu benötigst du das apache-Modul ''mod_env''. == Umleitung von https nach http == Webserver senden eine ''301-Umleitung'', falls eine Adresse ohne abschließenden Schrägstrich angefordert wird, die auf ein Verzeichnis zeigt. Leider gehen die Webserver hinter dem ''pound''-Proxy davon aus, dass sie per ''http'' und nicht per ''https'' erreicht werden können. Dies resultiert in einer Fehlermeldung ''404 - not found''. ''Pound'' ist in der Lage, solche Umleitungen zu korrigieren (zumindest ab der Version 1.8). Diese Umsetzung findet jedoch nur statt, wenn die Webserver anstelle von ''systemausfall.org'' die internen Namen der [[FaxeUML| UMLs]] verwenden. Dies lässt sich durch die apache-Direktiven ''!UseCanonicalName'' und ''!ServerName'' kontrollieren. Dabei ist es essentiell, dass diese beiden Direktiven '''vor''' allen anderen Statements gelesen werden. Ansonsten wird die Fehlersuche sehr unerfreulich :) Details: siehe FaxeWebServer == Subversion weiterleiten == Die Verwendung eines selbstkompilierten Pound-Pakets (inklusive configure-Flag ''--enable-msdav'') ist absolut notwendig (Details siehe oben). Andernfalls tritt beispielsweise folgende Fehlermeldung auf: {{{svn: PROPFIND Anfrage fehlgeschlagen auf '/svn/cryptobox' svn: PROPFIND von '/svn/cryptobox': Could not read status line: connection was closed by server.}}}