Você pode verificar minha postagem no blog sobre a configuração do Nginx como proxy reverso para o Tomcat . Pode ser interessante para você, pois o exemplo inclui alguns ajustes adicionais como o armazenamento em cache de conteúdo apenas para usuários não conectados e o redirecionamento para diferentes idiomas.
Vladimir Grichina
Respostas:
17
Para o nginx, confira seus documentos aqui . O suporte a proxy é incorporado.
No exemplo abaixo do site deles, você verá que o tráfego específico da porta 80 está sendo enviado para um único contêiner de servlet em execução na porta 8080.
Observe que, se você deseja executar vários contêineres de servlet de back-end (para balanceamento de carga, dimensionamento, etc ...), consulte o Upstream Fair Module que enviará tráfego ao servidor de back-end menos ocupado. Não é enviado por padrão w / nginx.
Você não precisa usar o mod_jk, pode usar o mod_proxy, ou seja, passar o tráfego pelo HTTP em vez do AJP. Se o nginx tiver capacidade de proxy, isso também funcionará.
O problema com um proxy é que ele é mais lento do que mod_jk / fastcgi / AJP
Adam Gent
2
Agora existe um novo ajp_module para o nginx . Não tenho experiência com isso, mas acho que a aderência da sessão e, especialmente, as conexões persistentes de back-end são bastante úteis para o Tomcat. Ambos os métodos (proxy http ou proxy ajp) são infelizmente inflexíveis para consultas extensas (cometa) ou grandes transferências de arquivos (uploads).
O lighttpd BTW possui um módulo proxy geral que pode lidar com codificação FCGI, HTTP, CGIS e AJP13. Parece uma abordagem melhor (mas acho que, ao ler, ela tem as mesmas limitações em relação aos padrões atípicos de solicitações / respostas longas / grandes).
Respostas:
Para o nginx, confira seus documentos aqui . O suporte a proxy é incorporado.
No exemplo abaixo do site deles, você verá que o tráfego específico da porta 80 está sendo enviado para um único contêiner de servlet em execução na porta 8080.
Observe que, se você deseja executar vários contêineres de servlet de back-end (para balanceamento de carga, dimensionamento, etc ...), consulte o Upstream Fair Module que enviará tráfego ao servidor de back-end menos ocupado. Não é enviado por padrão w / nginx.
fonte
Outra maneira de fazê-lo, como descrito na página wiki do LikeApache .
Também o testei com / myapp em vez de root e funciona também, colocando location / myapp e proxypass http: // myapp: 8080 / myapp ;
Além disso, essa configuração mapeia tudo para o aplicativo Java, o que é útil quando você tem URLs legais mapeadas por uma estrutura MVC como Struts.
fonte
Você não precisa usar o mod_jk, pode usar o mod_proxy, ou seja, passar o tráfego pelo HTTP em vez do AJP. Se o nginx tiver capacidade de proxy, isso também funcionará.
fonte
Agora existe um novo ajp_module para o nginx . Não tenho experiência com isso, mas acho que a aderência da sessão e, especialmente, as conexões persistentes de back-end são bastante úteis para o Tomcat. Ambos os métodos (proxy http ou proxy ajp) são infelizmente inflexíveis para consultas extensas (cometa) ou grandes transferências de arquivos (uploads).
https://github.com/yaoweibin/nginx_ajp_module#readme
O lighttpd BTW possui um módulo proxy geral que pode lidar com codificação FCGI, HTTP, CGIS e AJP13. Parece uma abordagem melhor (mas acho que, ao ler, ela tem as mesmas limitações em relação aos padrões atípicos de solicitações / respostas longas / grandes).
http://redmine.lighttpd.net/wiki/1/Docs:ModProxyCore
fonte