Apache als Reverse-Proxy installieren

Als erstes den Apache-Server installieren.

Es ist wichtig, dass das Modul libapache2-mod-proxy-html auf dem Apache mit installiert ist! Siehe Apache installieren.

Ich gehe hier von einem Setup mit Virtual Hosts aus, um verschiedene Rechnernamen auf interne Server umzubiegen, eine Weiterleitung nach Verzeichnisnamen in der URL kann in einer “Location” Direktive erfolgen, es muss nur der erste Parameter von “ProxyPass” usw. passend umgestellt werden. Mein Setup findet in einer VirtualHosts Sektion statt, und sieht folgendermaßen aus:

reverse Proxy auf Port 80

Hier leite ich den Host www.intelli.ch intern auf www.intelli.ch weiter. Das funktioniert, weil ich auf dem Server in der

/etc/hosts

Datei einen Eintrag

www.intelli.ch    <IP Adresse>

definiert habe. So leiter er also den externen DNS www.intelli.ch auf die interne www.intelli.ch Adresse weiter. Auf diese Art und Weise kann ich, falls ich mal den internen Ziel-Server ändere, einfach in der hosts-Datei die neue IP angeben, ohne den Apache zu restarten. Es ist mir klar, dass dies nur bei kleinen Server-Installationen ein akzeptabler Weg ist.

NameVirtualHost 192.168.x.xx:80
ProxyRequests OFF
HostnameLookups Off

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

<VirtualHost 192.168.x.xx:80>
        ServerAdmin my@mail.ch
        ServerName www.mydomain.ch
        ServerAlias mydomain.ch

        # Regeln zum umleiten auf den internen Server
        ProxyPass / http://www.mydomain.ch/
        ProxyPassReverse / http://www.mydomain.ch/

        # WICHTIG! gzip-Kompression deaktivieren - ohne funktioniert das URL Rewriting nicht
        RequestHeader unset Accept-Encoding

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

</VirtualHost>

reverse Proxy auf Port 443 (SSL)

#
# Use name-based virtual hosting.
#
NameVirtualHost 192.168.x.xx:443
ProxyRequests OFF
HostnameLookups Off

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

<VirtualHost 192.168.x.xx:443>
        ServerAdmin ralph@intelli.ch
        ServerName www.mydomain.ch

        #aktiviert SSL Unterstuetzung
        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/apache.pem
        SSLProxyEngine On
        SSLProxyCACertificateFile /etc/apache2/ssl/apache.pem

        # Regeln zum umleiten auf den internen Server
        ProxyPass / https://www.mydomain.ch/
        ProxyPassReverse / https://www.mydomain.ch/

        # WICHTIG! gzip-Kompression deaktivieren - ohne funktioniert das URL Rewriting nicht
        RequestHeader unset Accept-Encoding

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

</VirtualHost>