Un proxy inverso es un servidor que recibe todo el tráfico entrante a una organización y lo redirige a los servidores web correspondientes.
El "reverse proxy" puede necesitar reescribir las URL de cada página web (traducción de la URL externa a la URL interna correspondiente, según en qué servidor se encuentre la información solicitada).
Se utiliza para controlar temas como:
· Seguridad: el servidor proxy es una capa adicional de defensa y por lo tanto protege los servidores web.
· Cifrado / Aceleración SSL: cuando se crea un sitio web seguro, habitualmente el cifrado SSL no lo hace el mismo servidor web, sino que es realizado por el "reverse proxy", el cual puede estar equipado con un hardware de aceleración SSL (Security Sockets Layer).
· Distribución de Carga: el "reverse proxy" puede distribuir la carga entre varios servidores web.
· Caché de contenido estático: Un "reverse proxy" puede descargar los servidores web almacenando contenido estático como imágenes u otro contenido gráfico.
Puede usarse Apache como proxy inverso de forma sencilla: link1, link2, link3
Aunque también hay otras opciones como nginx, HAProxy o lighttpd: (link).
¿Por qué Java? En otros casos lo que necesito es crear una solución a medida que contemple requisitos adicionales.
En el mundo Java existen al menos dos soluciones a tomar de base cuando construimos un proxy inverso:
J2EP (jEasy Extensible Proxy) un proxy inverso corriendo sobre un motor JEE (pensado para trabajar sobre Tomcat).
– Se configura con el fichero data.xml
– Tiene dos conceptos fundamentales: Server y Rule
– BaseServer: indica el host y path del que quiero hacer proxy:
En el ejemplo el proxy recibe las peticiones a la url http://<proxy>/proxy_MiAplicaciony las redirige a http://<MiServidor>/MiAplicacion.
–RoundRobinCluster:
Decide a que servidor reenviar la petición con algoritmo RoundRobin, si se ha abierto una sesión anteriormente con la misma sesión siempre se redirige al mismo server.
– Rule: tiene reglas por IPs, Directorio,Rewrite,Composite
En el ejemplo el revertFrom y el revertTo se pueden sobreescribir los links a la ida y a la vuelta
Noodle : conjunto de clases capaces de hacer cambiar en las peticiones y respuestas HTTP.
– Se puede usar parar correr filtros en function de la petición que envíen la request a otro servidor web,…
– Tiene un conjunto de filtros interesantes:
· CheckForRedirect will propagate a redirect from the proxy response into the client response.
· CopyCookies will copy over Set-Cookie headers from the proxy response to the client response.
· CopyHeaders will copy all HTTP headers from the proxy response to the client response.
· HandleContentType will propagate the content type of the proxy response to the client response, and will disable further filtering if the content type is not "text/html".









Deja un comentario