ISPConfig auf Port 80 ausführen unter Verwendung von Apaches Reverse Proxy Feature (Debian Etch)

Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>

Diese Anleitung veranschaulicht, wie man ein Debian Etch System konfiguriert, auf dem das Webhosting Control Panel ISPConfig installiert ist, so dass auf ISPConfig von Port 80 aus zugegriffen werden kann. ISPConfig verwendet standardmäßig Port 81, was ein abweichender Port ist und und von einigen Firewalls und ISPs geblockt wird. Unter Verwendung von Apaches mod_proxy Module, können wir dieses Problem umgehen. Mit dessen Hilfe können wir ein Reverse Proxy erstellen, das die Seiten von ISPConfig auf Port 81 abholt.

Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Ich habe dies auf einem Debian Etch System getestet. Da einiege Befehle in dieser Anleitung Debian-spezifisch sind, können die meisten auf jede andere Linux Distribution angewandt werden (vor allem die Apache Konfiguration).

Ich verwende den Hostnamen ispconfig.example.com in dieser Anleitung. Das Ziel dieser Anleitung ist, auf ISPConfig unzer der URL http://ispconfig.example.com zugreifen zu können. Ich werde dies in zwei getrennten Kapiteln zeigen: Ein Kapitel wenn ISPConfig unter http://ispconfig.example.com:81 (http) installiert ist und ein Kapitel, wenn ISPConfig unter  https://ispconfig.example.com:81 (https) installiert ist.

2 ISPConfig mit http (http://ispconfig.example.com:81)

Um ein Reverse Proxy für http Anfragen zu erstellen, benötigen wir die Apache Module mod_proxy und mod_proxy_http. Diese sind in einer Standard Debian Etch Apache 2.2 Installation bereits installiert, also müssen wir sie lediglich aktivieren:

a2enmod proxy
a2enmod proxy_http

Danach müssen wir Apache neu laden:

/etc/init.d/apache2 force-reload

Als Nächstes müssen wir Apache konfigurieren. Öffne /etc/apache2/apache2.conf und suche diesen Bereich:

vi /etc/apache2/apache2.conf

[...]
# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

<Directory /var/www/sharedip>
    Options +Includes -Indexes
    AllowOverride None
    AllowOverride Indexes AuthConfig Limit FileInfo
    Order allow,deny
    Allow from all
    <Files ~ "^.ht">
    Deny from all
    </Files>
</Directory>
[...]

Folgende Zeilen fügen wir genau vor diesen Bereich ein:

NameVirtualHost *
<VirtualHost *>
        ServerName ispconfig.example.com
        DocumentRoot /var/www/
        ProxyRequests Off

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

        ProxyPass / http://ispconfig.example.com:81/
        ProxyPassReverse / http://ispconfig.example.com:81/
</VirtualHost>

so dass es wie folgt aussieht:

[...]
NameVirtualHost *
<VirtualHost *>
        ServerName ispconfig.example.com
        DocumentRoot /var/www/
        ProxyRequests Off

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

        ProxyPass / http://ispconfig.example.com:81/
        ProxyPassReverse / http://ispconfig.example.com:81/
</VirtualHost>

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

<Directory /var/www/sharedip>
    Options +Includes -Indexes
    AllowOverride None
    AllowOverride Indexes AuthConfig Limit FileInfo
    Order allow,deny
    Allow from all
    <Files ~ "^.ht">
    Deny from all
    </Files>
</Directory>
[...]

Starte dann Apache neu:

/etc/init.d/apache2 restart

Falls Du eine ähnliche Warnung wie diese erhältst:

server1:~/ispconfig/httpd/conf# /etc/init.d/apache2 restart
Forcing reload of web server (apache2)…[Tue May 22 23:23:12 2007] [warn] NameVirtualHost *:0 has no VirtualHosts
[Tue May 22 23:23:22 2007] [warn] NameVirtualHost *:0 has no VirtualHosts

kannst Du entweder die Zeile Include /etc/apache2/sites-enabled/ in /etc/apache2/apache2.conf auskommentieren:

vi /etc/apache2/apache2.conf

[...]
# Include the virtual host configurations:
#Include /etc/apache2/sites-enabled/
[...]

oder Du kommentierst die Zeile NameVirtualHost * am Anfang von /etc/apache2/sites-available/default aus:

vi /etc/apache2/sites-available/default

#NameVirtualHost *
[...]

Starte Apache neu:

/etc/init.d/apache2 restart

Die Warnungen müssten nun verschwunden sein.

Nun müssen wir die ISPConfig Konfigurationsdatei /home/admispconfig/ispconfig/lib/config.inc.php modifizieren. Du solltest etwas in der Art darin finden:

vi /home/admispconfig/ispconfig/lib/config.inc.php

[...]
if(isset($_SERVER['HTTP_HOST'])){
  $go_info["server"]["server_url"] = 'http://'.$_SERVER['HTTP_HOST'];
} else {
  $go_info["server"]["server_url"] = "http://ispconfig.example.com:81";
}
[...]

Modifiziere es so, dass es wie folgt aussieht:

[...]
//if(isset($_SERVER['HTTP_HOST'])){
//  $go_info["server"]["server_url"] = 'http://'.$_SERVER['HTTP_HOST'];
//} else {
  $go_info["server"]["server_url"] = "http://ispconfig.example.com";
//}
[...]

Das war’s. Öffne einen Browser und gib http://ispconfig.example.com ein, Du siehst die ISPConfig Login Aufforderung.

3 ISPConfig mit https (https://ispconfig.example.com:81)

Um ein Reverse Proxy für http Anfragen zu ersellen, benötigen wir die Apache Module mod_proxy und mod_proxy_http. Diese sind in einer Standard Debian Etch Apache 2.2 Installation bereits installiert, also müssen wir sie lediglich aktivieren:

a2enmod proxy
a2enmod proxy_http

Da unser Apache Reverse Proxy in der Lage sein muss mit einer https Seite (https://ispconfig.example.com:81) zu „kommunizieren“, benötigen wir außerdem die Module mod_proxy_connect und mod_ssl:

a2enmod proxy_connect
a2enmod ssl

Danach müssen wir Apache neu laden:

/etc/init.d/apache2 force-reload

Als Nächstes müssen wir Apache konfigurieren. Öffne /etc/apache2/apache2.conf und suche nach diesem Bereich:

vi /etc/apache2/apache2.conf

[...]
# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

<Directory /var/www/sharedip>
    Options +Includes -Indexes
    AllowOverride None
    AllowOverride Indexes AuthConfig Limit FileInfo
    Order allow,deny
    Allow from all
    <Files ~ "^.ht">
    Deny from all
    </Files>
</Directory>
[...]

Füge folgende Zeilen direkt vor diesem Bereich ein:

NameVirtualHost *
<VirtualHost *>
        ServerName ispconfig.example.com
        DocumentRoot /var/www/
        ProxyRequests Off

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

        ProxyPass / https://ispconfig.example.com:81/
        ProxyPassReverse / https://ispconfig.example.com:81/

        SSLProxyEngine on
        AllowCONNECT 81
</VirtualHost>

so dass es wie folgt aussieht:

[...]
NameVirtualHost *
<VirtualHost *>
        ServerName ispconfig.example.com
        DocumentRoot /var/www/
        ProxyRequests Off

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

        ProxyPass / https://ispconfig.example.com:81/
        ProxyPassReverse / https://ispconfig.example.com:81/

        SSLProxyEngine on
        AllowCONNECT 81
</VirtualHost>

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/

<Directory /var/www/sharedip>
    Options +Includes -Indexes
    AllowOverride None
    AllowOverride Indexes AuthConfig Limit FileInfo
    Order allow,deny
    Allow from all
    <Files ~ "^.ht">
    Deny from all
    </Files>
</Directory>
[...]

Starte Apache dann neu:

/etc/init.d/apache2 restart

Falls Du ähnliche Warnungen wie diese erhalten solltest:

server1:~/ispconfig/httpd/conf# /etc/init.d/apache2 restart
Forcing reload of web server (apache2)…[Tue May 22 23:23:12 2007] [warn] NameVirtualHost *:0 has no VirtualHosts
[Tue May 22 23:23:22 2007] [warn] NameVirtualHost *:0 has no VirtualHosts

kannst Du entweder die Zeile Include /etc/apache2/sites-enabled/ in /etc/apache2/apache2.conf auskommentieren:

vi /etc/apache2/apache2.conf

[...]
# Include the virtual host configurations:
#Include /etc/apache2/sites-enabled/
[...]

oder Du kommentierst die Zeile NameVirtualHost * am Anfang von /etc/apache2/sites-available/default aus:

vi /etc/apache2/sites-available/default

#NameVirtualHost *
[...]

Starte Apache neu:

/etc/init.d/apache2 restart

Die Warnungen müssten nun verschwunden sein.

Nun müssen wir die ISPConfig Konfigurationsdatei /home/admispconfig/ispconfig/lib/config.inc.php modifizieren. Du solltest etwas in der Art darin finden:

vi /home/admispconfig/ispconfig/lib/config.inc.php

[...]
if(isset($_SERVER['HTTP_HOST'])){
  $go_info["server"]["server_url"] = 'https://'.$_SERVER['HTTP_HOST'];
} else {
  $go_info["server"]["server_url"] = "https://ispconfig.example.com:81";
}
[...]

Modifiziere sie damit es wie folgt aussieht:

[...]
//if(isset($_SERVER['HTTP_HOST'])){
//  $go_info["server"]["server_url"] = 'https://'.$_SERVER['HTTP_HOST'];
//} else {
  $go_info["server"]["server_url"] = "http://ispconfig.example.com";
//}
[...]

Pass auf, dass es  http://ispconfig.example.com und nicht https://ispconfig.example.com heißt!

Das war’s. Öffne einen Browser und gib http://ispconfig.example.com ein. Du siehst die ISPConfig Login Aufforderung.

4 Links

Das könnte dich auch interessieren …