Servindo o Tomcat sob um sub-URI

3

Tenho muitos serviços vinculados a um único domínio, então esperava veicular o Tomcat em, digamos, o link , com o Nginx como um proxy reverso para o conector HTTP do Tomcat.

A configuração do Nginx é simples:

location /tomcat {
   include proxy_pass.conf;
   proxy_pass http://127.0.0.1:8080;
}

Se eu deixar como está, o Tomcat não conseguirá resolver solicitações que começam com /tomcat , mas se eu definir alias /; no Nginx, o Tomcat funcionará bem, mas infelizmente não é possível resolver o caminho sob o qual está sendo veiculado, portanto, todas as URLs estão com falta de /tomcat .

Eu passei pela referência de configuração para o Tomcat 7 várias vezes, mas não consegui encontrar nada que me permitisse configurar o Tomcat para servir todos os aplicativos sob o caminho /tomcat ou, de outra forma, adicioná-lo como um prefixo ao caminho de contexto para cada aplicativo.

Eu poderia configurar manualmente server.xml com um contêiner <context/> para cada aplicativo, mas isso me deixava desconfortável. Alguém poderia me dizer o que é que eu estou obviamente ausente?

    
por Filip Dupanović 21.04.2011 / 01:32

3 respostas

2

Eu tentei fazer a mesma coisa em várias ocasiões nos últimos 4-5 anos e tentei muitas maneiras diferentes, mas falhei miseravelmente em todas as tentativas. Finalmente, cheguei a uma conclusão de que (a) não é possível (b) mesmo que de alguma maneira isso possa ser feito, não valeria o esforço. Embora, eu ficaria agradavelmente surpreso se alguém descobrisse isso.

    
por 21.04.2011 / 02:01
1

Não testado, mas sua melhor aposta seria carregar um Java Bridge em APACHE2 / PHP para que ele execute o código java quando o encontrar.

link

    
por 21.04.2011 / 03:57
1

Aparentemente, o Tomcat 6 introduziu um mecanismo para conseguir isso, prefixando a pasta webapp ou o nome de arquivo .war com aquele prefixo, separados por um hash. Então, por exemplo:

${catalina.base}/webapps/tomcat#app1
${catalina.base}/webapps/tomcat#app2.war

... tornará os dois acessíveis por meio do link e link , respectivamente, sem qualquer configuração adicional.

Isso é explicado de forma enigmática na Referência do Contêiner de Contexto do Tomcat, mas veja esta mensagem útil na lista de usuários do Tomcat.

Infelizmente , há um problema: aparentemente, o Cocoon (até 2.1.11) engasga com os webapps cujos caminhos contêm um hash (consulte link ).

Portanto, quando você não tem nenhum webapps baseado no Cocoon sendo executado dentro do Tomcat, adicionar o prefixo 'hash' ao nome da pasta parece ser uma solução possível.

    
por 18.04.2012 / 00:35

Tags