Premissa
Em um servidor Ubuntu 16.04 com o Apache2 mais recente instalado, tenho Hosts Virtuais diferentes, cada um configurado corretamente (e protegido com Let's Encrypt):
- /etc/apache2/sites-enabled/my.site.com-le-ssl.conf
- /etc/apache2/sites-enabled/my.other.site.com-le-ssl.conf
apontando para conteúdo estático em:
- /var/www/my.site.com/
- /var/www/my.other.site.com/
Isso funciona bem :
chamando https://my.site.com/
Vejo o site estático contido em /var/www/my.site.com/
.
Eu então instalei o Tomcat 8.5 .9 e assegurou-o com um proxy reverso , portanto, adicionando:
<VirtualHost *:443>
. . .
JKMount /* ajp13_worker
. . .
</VirtualHost>
para / etc / apache2 / sites-enabled / meu.site.com-le-ssl.conf .
Isso também funciona bem :
chamando https://my.site.com/
agora vejo o Tomcat em casa.
meta desejada
Eu quero alcançar o seguinte resultado:
- chamando
https://my.site.com/
Eu quero ver o site estático ( /var/www/my.site.com/
);
- chamando
https://my.site.com/dynamic
e quero ver o Tomcat em casa;
chamando https://my.site.com/dynamic/myApp
Espero executar myApp.war
publicado em tomcat/webapps
;
Tentativa de solução
Minha ideia foi a seguinte:
-
faça com que o Apache JKMount-ing apenas as solicitações com o contexto /dynamic
, portanto, em vez de:
<VirtualHost *:443>
. . .
JKMount /* ajp13_worker
. . .
</VirtualHost>
eu usei:
<VirtualHost *:443>
. . .
JKMount /dynamic/* ajp13_worker
. . .
</VirtualHost>
e isso parece funcionar , no lado do Apache; chamando my.site.com
abrirá o conteúdo estático, enquanto chamando o my.site.com/dynamic
dará o Tomcat 404.
Agora preciso reescrever o URL para remover o contexto dynamic
, para torná-lo transparente para o Tomcat, e tentei durante as últimas três horas fazer isso com o RegravarValvaTomcat :
-
Eu editei tomcat/conf/server.xml
adicionando a Válvula:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
. . .
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
</Host>
-
Eu criei um arquivo tomcat/conf/Catalina/localhost/rewrite.config
, contendo a regra correta (testado aqui ):
RewriteRule ^dynamic/(.+)$ /$1
Por algum motivo, isso não funciona. A regra RewriteValve do Tomcat é ou ignorada, ou com mau funcionamento, ou há algo errado na maneira que eu pensava a coisa toda ... Eu não sou um administrador de sistema, então eu não ficaria surpreso com algum erro ingênuo aqui.
Você vê onde está o problema? Ou outra maneira de fazer isso funcionar?