URLs absolutas que não funcionam com o proxy Apache2 AJP Tomcat

2

Parece que não consigo configurar corretamente o ReverseProxy. As URLs retornadas são todas para o diretório raiz "/", não "/ tomcat" e apenas a página principal "default" do tomcat é exibida. Eu uso o Apache2 como um frontend para o Tomcat com as seguintes regras de proxy:

ProxyPass /tomcat ajp://127.0.0.1:8009/
ProxyPassReverse /tomcat ajp://127.0.0.1:8009/

Eu também tentei usar o ProxyName na configuração do conector AJP do Tomcat. Usando mod_rewrite para proxy o pedido AJP também deu o mesmo resultado.

Apache error.log fornece a seguinte linha (tentando carregar as imagens de sua própria raiz):

File does not exist: /var/www/asf-logo-wide.gif, referer:

EDIT: O AJP funciona através do mod_jk, mas continua recebendo o mesmo problema com o HTTP ao usar subpastas.

    
por Indrek 27.11.2010 / 15:45

4 respostas

3

O problema é que seu servidor tomcat está incorporando links no HTML com o caminho que ele conhece. Não é o caminho para o seu servidor proxy. (Garnered isso de sua entrada de log * .gif)

ProxyPassReverse não modifica links em HTML. Apenas modifica os cabeçalhos HTTP.

Para que isso funcione, você precisa configurar o tomcat com o local e o caminho apropriados no contexto do aplicativo. Provavelmente, você precisará renomear o arquivo webapp.war para ROOT.war e alterar qualquer configuração de contexto para "/".

    
por 07.12.2010 / 15:47
2

Você pode tentar este artigo, que explica a maneira apropriada de usar o ProxyPassReverse:

link

    
por 01.12.2010 / 13:37
0

Caso você precise voltar para mod_proxy :

<Location /tomcat>
    ProxyPass ajp://127.0.0.1:8009/tomcat
    ProxyPassReverse ajp://127.0.0.1:8009/tomcat
</Location>
    
por 28.11.2010 / 00:01
0

Como você está gerando URLs absolutas, há vários cenários comuns:

Use mod_proxy_html .

Ou você pode usar RewriteEngine para reescrever URLs em / to /myapp/ .

RewriteEngine On
RewriteCond %{REQUEST_URI} ! ^/myapp/
RewriteRule ^/(.*)$ /myapp/$1

Isso é da memória, portanto, convém verificar isso por meio da documentação do mod_rewrite . Mas eu recomendaria ficar com mod_proxy_html , pois reescrever os links enviados para os clientes seria menos complexo do que reescrever todos os pedidos internamente.

    
por 01.12.2010 / 13:57