Puede consultar mi publicación de blog sobre la configuración de Nginx como proxy inverso para Tomcat . Puede ser interesante para usted, ya que el ejemplo incluye algunos ajustes adicionales como el almacenamiento en caché de contenido solo para usuarios no registrados y la redirección para diferentes idiomas.
Vladimir Grichina
Respuestas:
17
Para nginx revisa sus documentos aquí . El soporte de proxy está integrado.
En el siguiente ejemplo de su sitio, verá que el tráfico específico del puerto 80 se envía a un único contenedor de servlet que se ejecuta en el puerto 8080.
Tenga en cuenta que si desea ejecutar varios contenedores de servlets de back-end (para el equilibrio de carga, el escalado, etc.), debe mirar el Upstream Fair Module que enviará el tráfico al servidor de back-end menos ocupado. No se envía por defecto con nginx.
También lo he probado con / myapp en lugar de root y funciona también, colocando location / myapp y proxypass http: // myapp: 8080 / myapp ;
Además, esta configuración asigna todo a la aplicación Java, lo cual es útil cuando tiene URL agradables que están asignadas por un marco MVC como Struts.
No tiene que usar mod_jk, puede usar mod_proxy, es decir, pasar el tráfico a través de HTTP en lugar de AJP. Si nginx tiene la capacidad de proxy, eso debería funcionar igual de bien.
El problema con un proxy es que es más lento que mod_jk / fastcgi / ajp
Adam Gent el
2
Ahora hay un ajp_module bastante nuevo para nginx . No tengo experiencia con eso, pero creo que la rigidez de la sesión y especialmente las conexiones persistentes de back-end son bastante útiles para Tomcat. Ambos métodos (proxy http o proxy ajp) son lamentablemente inflexibles para consultas de larga duración (cometa) o transferencias de archivos grandes (cargas).
lighttpd BTW tiene un módulo proxy general que puede manejar la codificación FCGI, HTTP, CGIS y AJP13. Este parece un mejor enfoque (pero creo que al leerlo tiene las mismas limitaciones con respecto a los patrones de solicitud / respuesta largos / grandes no típicos).
Respuestas:
Para nginx revisa sus documentos aquí . El soporte de proxy está integrado.
En el siguiente ejemplo de su sitio, verá que el tráfico específico del puerto 80 se envía a un único contenedor de servlet que se ejecuta en el puerto 8080.
Tenga en cuenta que si desea ejecutar varios contenedores de servlets de back-end (para el equilibrio de carga, el escalado, etc.), debe mirar el Upstream Fair Module que enviará el tráfico al servidor de back-end menos ocupado. No se envía por defecto con nginx.
fuente
Otra forma de hacerlo como se describe en la página wiki LikeApache .
También lo he probado con / myapp en lugar de root y funciona también, colocando location / myapp y proxypass http: // myapp: 8080 / myapp ;
Además, esta configuración asigna todo a la aplicación Java, lo cual es útil cuando tiene URL agradables que están asignadas por un marco MVC como Struts.
fuente
No tiene que usar mod_jk, puede usar mod_proxy, es decir, pasar el tráfico a través de HTTP en lugar de AJP. Si nginx tiene la capacidad de proxy, eso debería funcionar igual de bien.
fuente
Ahora hay un ajp_module bastante nuevo para nginx . No tengo experiencia con eso, pero creo que la rigidez de la sesión y especialmente las conexiones persistentes de back-end son bastante útiles para Tomcat. Ambos métodos (proxy http o proxy ajp) son lamentablemente inflexibles para consultas de larga duración (cometa) o transferencias de archivos grandes (cargas).
https://github.com/yaoweibin/nginx_ajp_module#readme
lighttpd BTW tiene un módulo proxy general que puede manejar la codificación FCGI, HTTP, CGIS y AJP13. Este parece un mejor enfoque (pero creo que al leerlo tiene las mismas limitaciones con respecto a los patrones de solicitud / respuesta largos / grandes no típicos).
http://redmine.lighttpd.net/wiki/1/Docs:ModProxyCore
fuente