Ejecutar ISPConfig 2 en el puerto 80 usando la función de proxy inverso de Apache (Debian Etch)
Este artículo muestra cómo puede configurar un sistema Debian Etch que tiene instalado el panel de control de alojamiento web ISPConfig 2 para que se pueda acceder a ISPConfig en el puerto 80. De forma predeterminada, ISPConfig usa el puerto 81, que es un puerto no estándar y está bloqueado por algunos cortafuegos y ISP. Usando el módulo mod_proxy de Apache, podemos evitar este problema. Nos permite crear un proxy inverso que puede obtener las páginas de ISPConfig en el puerto 81.
Tenga en cuenta:este tutorial es solo sobre ISPConfig 2, no es compatible con ISPConfig 3. Para ISPConfig 3 hay un complemento inverso de Nginx disponible en github.
¡No emito ninguna garantía de que esto funcione para usted!
1 nota preliminar
He probado esto en un sistema Debian Etch. Si bien algunos comandos en este tutorial son específicos de Debian, la mayoría se puede aplicar a cualquier otra distribución de Linux (especialmente la configuración de Apache).
Estoy usando el nombre de host ispconfig.example.com en este tutorial. El objetivo de este tutorial es acceder a ISPConfig bajo la URL http://ispconfig.example.com. Voy a mostrar cómo hacer esto en dos capítulos separados:un capítulo si ISPConfig está instalado en http://ispconfig.example.com:81 (http), y un capítulo si ISPConfig está instalado en https://ispconfig .ejemplo.com:81 (https).
2 ISPConfig usando http (http://ispconfig.example.com:81)
Para crear un proxy inverso para solicitudes http, necesitamos los módulos de Apache mod_proxy y mod_proxy_http. Estos ya están instalados en una instalación estándar de Debian Etch Apache 2.2, por lo que todo lo que tenemos que hacer es habilitarlos:
a2enmod proxy
a2enmod proxy_http
Luego, tenemos que recargar Apache:
/etc/init.d/apache2 force-reload
A continuación, debemos configurar Apache. Abra /etc/apache2/apache2.conf y busque esta sección:
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>
[...] |
Justo antes de esta sección, agregamos las siguientes líneas:
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> |
para que se vea así:
[...]
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>
[...] |
Luego reinicie Apache:
/etc/init.d/apache2 restart
Si recibe una advertencia como esta:
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
luego puede comentar la línea Incluir /etc/apache2/sites-enabled/ en /etc/apache2/apache2.conf:
vi /etc/apache2/apache2.conf
[...]
# Include the virtual host configurations:
#Include /etc/apache2/sites-enabled/
[...] |
o comenta la línea NameVirtualHost * al principio de /etc/apache2/sites-disponible/default:
vi /etc/apache2/sites-available/default
#NameVirtualHost *
[...] |
Reiniciar Apache:
/etc/init.d/apache2 restart
Las advertencias deberían desaparecer ahora.
Finalmente tenemos que modificar el archivo de configuración de ISPConfig /home/admispconfig/ispconfig/lib/config.inc.php. Deberías encontrar algo como esto en él:
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";
}
[...] |
Modifíquelo para que se vea así:
[...]
//if(isset($_SERVER['HTTP_HOST'])){
// $go_info["server"]["server_url"] = 'http://'.$_SERVER['HTTP_HOST'];
//} else {
$go_info["server"]["server_url"] = "http://ispconfig.example.com";
//}
[...] |
Eso es todo. Abra un navegador y escriba http://ispconfig.example.com, y debería ver el indicador de inicio de sesión de ISPConfig.
3 ISPConfig usando https (https://ispconfig.example.com:81)
Para crear un proxy inverso para solicitudes http, necesitamos los módulos de Apache mod_proxy y mod_proxy_http. Estos ya están instalados en una instalación estándar de Debian Etch Apache 2.2, por lo que todo lo que tenemos que hacer es habilitarlos:
a2enmod proxy
a2enmod proxy_http
Debido a que nuestro proxy inverso de Apache debe poder "hablar" con un sitio https (https://ispconfig.example.com:81), también necesitamos los módulos mod_proxy_connect y mod_ssl:
a2enmod proxy_connect
a2enmod ssl
Luego, tenemos que recargar Apache:
/etc/init.d/apache2 force-reload
A continuación, debemos configurar Apache. Abra /etc/apache2/apache2.conf y busque esta sección:
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>
[...] |
Justo antes de esta sección, agregue las siguientes líneas:
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> |
para que se vea así:
[...]
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>
[...] |
Luego reinicie Apache:
/etc/init.d/apache2 restart
Si recibe una advertencia como esta:
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
luego puede comentar la línea Incluir /etc/apache2/sites-enabled/ en /etc/apache2/apache2.conf:
vi /etc/apache2/apache2.conf
[...]
# Include the virtual host configurations:
#Include /etc/apache2/sites-enabled/
[...] |
o comenta la línea NameVirtualHost * al principio de /etc/apache2/sites-disponible/default:
vi /etc/apache2/sites-available/default
#NameVirtualHost *
[...] |
Reiniciar Apache:
/etc/init.d/apache2 restart
Las advertencias deberían desaparecer ahora.
Finalmente tenemos que modificar el archivo de configuración de ISPConfig /home/admispconfig/ispconfig/lib/config.inc.php. Deberías encontrar algo como esto en él:
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";
}
[...] |
Modifíquelo para que se vea así:
[...]
//if(isset($_SERVER['HTTP_HOST'])){
// $go_info["server"]["server_url"] = 'https://'.$_SERVER['HTTP_HOST'];
//} else {
$go_info["server"]["server_url"] = "http://ispconfig.example.com";
//}
[...] |
¡Asegúrese de que lea http://ispconfig.example.com, no https://ispconfig.example.com!
Eso es todo. Abra un navegador y escriba http://ispconfig.example.com, y debería ver el indicador de inicio de sesión de ISPConfig.
4 Enlaces
- Módulo 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