Ausführen von ISPConfig 2 auf Port 80 unter Verwendung der Reverse-Proxy-Funktion von Apache (Debian Etch)
Dieser Artikel zeigt, wie Sie ein Debian Etch-System konfigurieren können, auf dem das Webhosting-Kontrollfeld ISPConfig 2 installiert ist, sodass auf ISPConfig über Port 80 zugegriffen werden kann. Standardmäßig verwendet ISPConfig Port 81, der kein Standardport ist und von einigen Firewalls blockiert wird ISPs. Durch die Verwendung des mod_proxy-Moduls von Apache können wir dieses Problem vermeiden. Damit können wir einen Reverse-Proxy erstellen, der die Seiten von ISPConfig auf Port 81 abrufen kann.
Bitte beachten Sie:Dieses Tutorial bezieht sich nur auf ISPConfig 2, es ist nicht mit ISPConfig 3 kompatibel. Für ISPConfig 3 gibt es ein Nginx-Reverse-Plugin, das auf Github verfügbar ist.
Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!
1 Vorbemerkung
Ich habe dies auf einem Debian Etch System getestet. Während einige Befehle in diesem Tutorial Debian-spezifisch sind, können die meisten davon auf jede andere Linux-Distribution (insbesondere die Apache-Konfiguration) angewendet werden.
Ich verwende in diesem Tutorial den Hostnamen ispconfig.example.com. Das Ziel dieses Tutorials ist der Zugriff auf ISPConfig unter der URL http://ispconfig.example.com. Ich werde in zwei separaten Kapiteln zeigen, wie das geht:ein Kapitel, wenn ISPConfig unter http://ispconfig.example.com:81 (http) installiert ist, und ein Kapitel, wenn ISPConfig unter https://ispconfig installiert ist .example.com:81 (https).
2 ISPConfig unter Verwendung von http (http://ispconfig.example.com:81)
Um einen Reverse-Proxy für HTTP-Anfragen zu erstellen, benötigen wir die Apache-Module mod_proxy und mod_proxy_http. Diese sind bereits in einer Standardinstallation von Debian Etch Apache 2.2 installiert, also müssen wir sie nur 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. Öffnen Sie /etc/apache2/apache2.conf und suchen Sie nach diesem Abschnitt:
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> [...] |
Direkt vor diesem Abschnitt fügen wir die folgenden Zeilen hinzu:
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> |
sodass es so 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> [...] |
Starten Sie dann Apache neu:
/etc/init.d/apache2 restart
Wenn Sie eine Warnung wie diese erhalten:
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
dann können Sie 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 Sie kommentieren die Zeile NameVirtualHost * am Anfang von /etc/apache2/sites-available/default:
ausvi /etc/apache2/sites-available/default
#NameVirtualHost * [...] |
Starten Sie Apache neu:
/etc/init.d/apache2 restart
Die Warnungen sollten jetzt weg sein.
Abschließend müssen wir die ISPConfig-Konfigurationsdatei /home/admispconfig/ispconfig/lib/config.inc.php anpassen. Darin sollten Sie etwa Folgendes 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"; } [...] |
Ändern Sie es so, dass es so 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 ist es. Öffnen Sie einen Browser und geben Sie http://ispconfig.example.com ein, und Sie sollten die ISPConfig-Anmeldeaufforderung sehen.
3 ISPConfig mit https (https://ispconfig.example.com:81)
Um einen Reverse-Proxy für HTTP-Anfragen zu erstellen, benötigen wir die Apache-Module mod_proxy und mod_proxy_http. Diese sind bereits in einer Standardinstallation von Debian Etch Apache 2.2 installiert, also müssen wir sie nur aktivieren:
a2enmod proxy
a2enmod proxy_http
Da unser Apache-Reverse-Proxy in der Lage sein muss, mit einer https-Site (https://ispconfig.example.com:81) zu „sprechen“, benötigen wir auch 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. Öffnen Sie /etc/apache2/apache2.conf und suchen Sie nach diesem Abschnitt:
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ügen Sie direkt vor diesem Abschnitt die folgenden Zeilen hinzu:
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> |
sodass es so 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> [...] |
Starten Sie dann Apache neu:
/etc/init.d/apache2 restart
Wenn Sie eine Warnung wie diese erhalten:
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
dann können Sie 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 Sie kommentieren die Zeile NameVirtualHost * am Anfang von /etc/apache2/sites-available/default:
ausvi /etc/apache2/sites-available/default
#NameVirtualHost * [...] |
Starten Sie Apache neu:
/etc/init.d/apache2 restart
Die Warnungen sollten jetzt weg sein.
Abschließend müssen wir die ISPConfig-Konfigurationsdatei /home/admispconfig/ispconfig/lib/config.inc.php anpassen. Darin sollten Sie etwa Folgendes 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"; } [...] |
Ändern Sie es so, dass es so 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"; //} [...] |
Bitte stellen Sie sicher, dass es http://ispconfig.example.com lautet, nicht https://ispconfig.example.com!
Das ist es. Öffnen Sie einen Browser und geben Sie http://ispconfig.example.com ein, und Sie sollten die ISPConfig-Anmeldeaufforderung sehen.
4 Links
- Apache-Modul 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