Hosting Virtual en Apache (Parte II)

Hoy continuamos con la segunda entrega sobre mis andanzas con el Hosting Virtual de Apache.

Podeis ver la primera en: Hosting Virtual en Apache (Parte I).

Veremos como hacer que nuestro Apache sirva las páginas de otro servidor remoto encriptados con SSL y sin encriptar.

Redirigir a otro servidor web

Esta estrategia nos puede servir para servir un servidor externo como si se tratara del nuestro. Es una especie de proxy web, pero de un solo sitio.

Puede tener varios usos:

  • Servir hacia internet un servidor local que por seguridad este capado.
  • Servir desde internet algún servidor lejano para ganar velocidad.
  • A ver si se os ocurre alguno más y me lo contais.

Para utilizar las directivas siguientes hay que tener habilitado el módulo mod_proxy. Como se habilita en Apache2:

elite:~# cd /etc/apache2/mods-enabled/
elite:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.conf proxy.conf
elite:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy.load proxy.load
elite:/etc/apache2/mods-enabled# ln -s ../mods-available/proxy_http.load proxy_http.load
elite:/etc/apache2/mods-enabled# /etc/init.d/apache restart

El código:

<VirtualHost *>
        ServerName privado.tudominio.com

        ProxyPreserveHost On
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyPass / http://192.168.0.1/
        ProxyPassReverse / http://192.168.0.1/
</VirtualHost>

ServerName es como llamaremos desde la internet (http://privado.tudominio.com) a este recurso (http://192.168.0.1/) de nuestra red local.

La directiva <Proxy> marca los permisos de entrada al objeto. Y las directivas ProxyPass (mapeando la dirección externa) y ProxyPassReverse (ajustando la URL al campo HTTP Location) nos fijan la dirección (IP o DNS) de lo que queramos mapear.

Redirigir a otro servidor web, pero seguro https

Pues más difícil todavia, queremos que nuestro Apache actue como servidor proxy de un servidor remoto seguro.

Este problema se me planteo al instalar webmin que provee de un servidor seguro en el puerto 10000, y llegue a la conclusión de que era más infernal modificar el uso de este servidor que redirigirlo a través de este mecanismo.

Por supuesto hay que tener instalados los módulos mod_ssl y mod_proxy (que instalamos en el punto anterior):

elite:~# cd /etc/apache2/mods-enabled/
elite:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.conf ssl.conf
elite:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.load ssl.load
elite:/etc/apache2/mods-enabled# /etc/init.d/apache restart

La configuración del fichero de Virtual Host quedaría:

<VirtualHost *>
        ServerName webmin.tudominio.com

        ProxyRequests Off
        SSLProxyEngine On
        ProxyVia On
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Allow from all
        </Proxy>

        ProxyPass / https://localhost:10000/
        ProxyPassReverse / https://localhost:10000/
        ProxyPassReverseCookieDomain localhost:10000 tudominio.com
        ProxyPassReverseCookiePath / /
</VirtualHost>

Pues sería igual que el anterior pero habría que cachear los certificados SSL con la etiqueta SSLProxyEngine, y además las cookies con las últimas etiquetas.

Leave a Reply

Your email address will not be published. Required fields are marked *