Spuštění ISPConfig 2 na portu 80 pomocí funkce Reverse Proxy od Apache (Debian Etch)
Tento článek ukazuje, jak můžete nakonfigurovat systém Debian Etch, který má nainstalovaný ovládací panel webhostingu ISPConfig 2 tak, aby byl ISPConfig přístupný na portu 80. Ve výchozím nastavení používá ISPConfig port 81, což je nestandardní port a je blokován některými firewally a poskytovatelé internetových služeb. Použitím modulu mod_proxy od Apache se tomuto problému můžeme vyhnout. Umožňuje nám vytvořit reverzní proxy, která může načítat stránky z ISPConfig na portu 81.
Poznámka:Tento tutoriál je pouze o ISPConfig 2, není kompatibilní s ISPConfig 3. Pro ISPConfig 3 je na githubu dostupný reverzní plugin Nginx.
Neposkytuji žádnou záruku, že to pro vás bude fungovat!
1 předběžná poznámka
Testoval jsem to na systému Debian Etch. Zatímco některé příkazy v tomto tutoriálu jsou specifické pro Debian, většinu z nich lze použít na jakoukoli jinou distribuci Linuxu (zejména na konfiguraci Apache).
V tomto tutoriálu používám název hostitele ispconfig.example.com. Cílem tohoto kurzu je přistupovat k ISPConfig pod URL http://ispconfig.example.com. Ukážu, jak to udělat ve dvou samostatných kapitolách:jedna kapitola, pokud je ISPConfig nainstalován pod http://ispconfig.example.com:81 (http), a jedna kapitola, pokud je ISPConfig nainstalován pod https://ispconfig .example.com:81 (https).
2 ISPConfig pomocí http (http://ispconfig.example.com:81)
Abychom vytvořili reverzní proxy pro http požadavky, potřebujeme moduly Apache mod_proxy a mod_proxy_http. Ty jsou již nainstalovány ve standardní instalaci Debian Etch Apache 2.2, takže vše, co musíme udělat, je povolit:
a2enmod proxy
a2enmod proxy_http
Poté musíme znovu načíst Apache:
/etc/init.d/apache2 force-reload
Dále musíme nakonfigurovat Apache. Otevřete /etc/apache2/apache2.conf a vyhledejte tuto sekci:
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> [...] |
Přímo před tuto sekci přidáváme následující řádky:
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> |
aby to vypadalo takto:
[...] 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> [...] |
Poté restartujte Apache:
/etc/init.d/apache2 restart
Pokud dostanete varování jako toto:
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
pak můžete buď okomentovat řádek Include /etc/apache2/sites-enabled/ v /etc/apache2/apache2.conf:
vi /etc/apache2/apache2.conf
[...] # Include the virtual host configurations: #Include /etc/apache2/sites-enabled/ [...] |
nebo zakomentujete řádek NameVirtualHost * na začátku /etc/apache2/sites-available/default:
vi /etc/apache2/sites-available/default
#NameVirtualHost * [...] |
Restartujte Apache:
/etc/init.d/apache2 restart
Varování by nyní měla být pryč.
Nakonec musíme upravit konfigurační soubor ISPConfig /home/admispconfig/ispconfig/lib/config.inc.php. Měli byste v něm najít něco takového:
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"; } [...] |
Upravte jej tak, aby vypadal takto:
[...] //if(isset($_SERVER['HTTP_HOST'])){ // $go_info["server"]["server_url"] = 'http://'.$_SERVER['HTTP_HOST']; //} else { $go_info["server"]["server_url"] = "http://ispconfig.example.com"; //} [...] |
A je to. Otevřete prohlížeč a zadejte http://ispconfig.example.com a měla by se zobrazit výzva k přihlášení k ISPConfig.
3 ISPConfig pomocí https (https://ispconfig.example.com:81)
Abychom vytvořili reverzní proxy pro http požadavky, potřebujeme moduly Apache mod_proxy a mod_proxy_http. Ty jsou již nainstalovány ve standardní instalaci Debian Etch Apache 2.2, takže vše, co musíme udělat, je povolit:
a2enmod proxy
a2enmod proxy_http
Protože náš reverzní proxy Apache musí být schopen „mluvit“ se stránkou https (https://ispconfig.example.com:81), potřebujeme také moduly mod_proxy_connect a mod_ssl:
a2enmod proxy_connect
a2enmod ssl
Poté musíme znovu načíst Apache:
/etc/init.d/apache2 force-reload
Dále musíme nakonfigurovat Apache. Otevřete /etc/apache2/apache2.conf a vyhledejte tuto sekci:
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> [...] |
Přímo před tuto část přidejte následující řádky:
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> |
aby to vypadalo takto:
[...] 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> [...] |
Poté restartujte Apache:
/etc/init.d/apache2 restart
Pokud dostanete varování jako toto:
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
pak můžete buď okomentovat řádek Include /etc/apache2/sites-enabled/ v /etc/apache2/apache2.conf:
vi /etc/apache2/apache2.conf
[...] # Include the virtual host configurations: #Include /etc/apache2/sites-enabled/ [...] |
nebo zakomentujete řádek NameVirtualHost * na začátku /etc/apache2/sites-available/default:
vi /etc/apache2/sites-available/default
#NameVirtualHost * [...] |
Restartujte Apache:
/etc/init.d/apache2 restart
Varování by nyní měla být pryč.
Nakonec musíme upravit konfigurační soubor ISPConfig /home/admispconfig/ispconfig/lib/config.inc.php. Měli byste v něm najít něco takového:
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"; } [...] |
Upravte jej tak, aby vypadal takto:
[...] //if(isset($_SERVER['HTTP_HOST'])){ // $go_info["server"]["server_url"] = 'https://'.$_SERVER['HTTP_HOST']; //} else { $go_info["server"]["server_url"] = "http://ispconfig.example.com"; //} [...] |
Ujistěte se prosím, že je to http://ispconfig.example.com, nikoli https://ispconfig.example.com!
A je to. Otevřete prohlížeč a zadejte http://ispconfig.example.com a měla by se zobrazit výzva k přihlášení k ISPConfig.
4 odkazy
- Modul Apache 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