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
- Apache Module mod_proxy: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
- Apache: http://httpd.apache.org
- ISPConfig: http://www.ispconfig.org
- Debian: http://www.debian.org