Configurando un Reverse Proxy con Apache

Un Proxy es un servicio que actúa como intermediario entre una comunicación del tipo Cliente-Servidor.

Mientras que un proxy normal (Forward Proxy) hace que un servidor no te contacte directamente, sino que es el proxy quien se conecta con el servidor, manteniendo al cliente en el anonimato, un Reverse Proxy, mantiene al servidor en el anonimato para con sus clientes…

 

Éstas imágenes lo aclaran muy bien:

Forward Proxy:

Forward Proxy

Reverse Proxy:Reverse Proxy

(Gracias Wikipedia por las imágenes)

 

Para qué podemos utilizar un Reverse Proxy?

Los usos son muchos, pero el clásico es el siguiente:

Supongamos que instalamos un servicio en nuestro servidor, este servicio responde al puerto 8080, es decir, accedemos a este servicio mediante http://www.example.com:8080.

Pero queremos acceder al servicio mediante http://servicio.example.com porque es más fácil para los usuarios.

Obviamente, no podemos configurar el puerto del servicio para que use el 80 porque tenemos un Apache o que ya está corriendo en ese puerto…

Entonces, “enmascaramos” la verdadera URL con el Reverse Proxy…

 

Como configurar un Reverse Proxy en Apache:

Primero instalamos un paquete que nos va a servir:

apt-get-install libapache2-mod-proxy-html

Luego, activamos los módulos de apache:

a2enmod proxy  a2enmod proxy_html service apache2 restart

Con eso, ya estamos listos para crear el proxy.

Es muy sencillo:

Esas lineas dentro de un Virtual Host de Apache, son suficientes para que el proxy funcione

Pero, si el servicio que esta detrás del proxy utiliza mucho Ajax/JavaScript/CSS, vamos a notar un rendimiento muy pobre, en otras palabras, si accedemos al sitio desde la URL original: http://www.example.com:8080 tendremos una respuesta normal, pero si accedemos mediante la URL enmascarada, service.example.com, podemos llegar a tener demoras de 10 a 20 segundos!! inclusive puede ocasionar Time-Outs…

Es decir, un sitio web detrás del Reverse Proxy, se va a notar muy muy lento. Mucho más lento que accediendo desde la URL original.

Esto sucede porque por defecto, el mod_proxy solo re-mapea las URLs en los headers, no en el contenido de la página, además el modulo mod_proxy_html tampoco parsea CSS o JavaScript, entonces las URLs que se encuentran dentro de esos archivos y el contenido de la página, no son re-mapeadas, provocando una serie de Lookups que demoran mucho tiempo

 

Entonces, el código final, con lo  anterior solucionado sería el siguiente:

 

Luego, hacemos un último:

service apache2 restart

Y ya estamos listos….

 

Con eso deberiamos poder acceder a http://service.example.com exactamente igual que si accediéramos por la URL original!!!

 

Saludos!!

¿Qué es una VPS?

VPS, o Virtual Private Server, en español significa, Servidor Privado Virtual.

Que es una VPS

¿Qué es una VPS?

Una VPS, es un servidor virtual, que corre en un servidor físico que a su vez también alberga otras VPS. Cada VPS esta completamente aislada de las demás, tanto como de espacio en disco, como en uso del CPU. El manejo de la RAM en una VPS puede ser un poco mas complejo…  lo explico mas adelante en este post.

Una VPS es un paso intermedio, entre un hosting comun, y un servidor dedicado, hay mucha variedad de VPS, la mayor ventaja es que son completamente upgradeables es decir, que en la medida que el servidor fisico lo soporte, podemos aumentar la RAM, la velocidad del CPU, o la velocidad del puerto ethernet, con un par de clicks, instantaneamente.

Otra ventaja con respecto a un hosting compartido comun, es que en el 99% de los casos, NO dependemos de otros usuarios y somos completamente responsables de el uptime del server, ya que si una VPS está usando el CPU al 100%, ésto no afecta a las otras VPS.

Otra ventaja, es la cantidad de sistemas operativos que hay para elegir, también, con solo dos clicks, podemos elegir que distro de linux usaremos, e inclusive versiones de windows server.

 

Sistemas Operativos

¿Cómo elegir una VPS?

Hay dos tipos de VPS, Managed, y Unmanaged, cada una tiene sus ventajas, que explicare ahora, pero  un gran porcentaje de la desicion se basa en el conocimiento de linux (o windows server) que tengamos.

Ventajas de una VPS “Managed“:

  • No necesitas tener conocimientos de servidores.
  • Puedes tener tu hosting online en pocos minutos.
  • Por lo general, el soporte tecnico es mejor que en las Unmanaged.

 

Desventajas de una VPS “Managed“:
  • No tienes acceso al 100% de tu VPS.
  • Dependes del software que te instalen.
  • El precio.

 

Antes de pasar a las VPS “Unmanaged” aclaremos el tema del precio. En general, las “Managed” arrancan en 15 dolares al mes, mientras que “Unmanaged” hay desde 3 dolares al mes.

 

Ventajas de una VPS “Unmanaged“:
  • Acceso al 100% a la VPS.
  • Podemos elegir que programas instalar, y cuales no.
  • El precio.

 

Desventajas de una VPS “Unmanaged“:
  • Necesitas tener conocimientos de Linux o Windows Server.
  • Poco soporte técnico.

 

RAM

Como dije anteriormente, la decisión entre una VPS Managed y una UnManaged, pasa por tus conocimientos de linux.
Cuando ya tengas decidido que tipo de VPS deseas tener, el factor mas importante para la eleccion del plan de VPS, será la memoria RAM.

 

Aqui, tambien tenemos dos puntos a considerar:
  • RAM Dedicada
  • Burstable RAM

La primera, es la RAM que tendremos disponible físicamente garantizada SIEMPRE en nuestra VPS, y la segunda es una RAM compartida entre VPS, que no siempre tendremos disponible, y que solo se usará en casos de urgencia, por ejemplo, cuando un sitio a cierta hora del día, tiene muchas visitas.

 

Algunos de los vendedores, ofrecen burstable RAM, pero otros NO. Por eso, ésta gran ventaja que supone tener más RAM cuando se necesite, puede ser otro factor a tener en cuenta a la hora de elegir una VPS.
Espero sus comentarios, con respecto al tema. En lo personal, a mi me gustan las VPS UnManaged, y en un próximo Post, voy a explicar como montar un Servidor Web COMPLETO, desde cero.

 

Saludos!