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.