2009-09-08 12 views
13

Sto usando Tomcat 5.5.9 e Apache 2.xCome utilizzare un nome diverso percorso nel ProxyPass che il nome del contesto Tomcat

Stiamo cercando di utilizzare un nome di percorso in ProxyPass che è diverso rispetto al Tomcat nome del contesto.

ProxyPass /path http://localhost:8080/contextname 

Tuttavia, questo non funziona. Quando questi due sono gli stessi allora tutto funziona correttamente.

La maggior parte degli esempi che vedo sulla rete ha anche il percorso uguale a il nome del contesto Tomcat.

Sto usando "context.xml" nel contesto di Tomcat e non ho voci "server.xml". Inoltre, sto usando semplice httd.conf e NON sto usando alcuna voce di VirtualHost.

Qualsiasi aiuto è apprezzato.

saluti,

Diptenu

risposta

10

Credo che hai bisogno sia

ProxyPass /path/ http://localhost:8080/contextname/ 
ProxyPassReverse /path/ http://localhost:8080/contextname/ 

Qual è il motivo di non usare mod_jk?

+0

Ciao David, Ho avuto entrambi i comandi ProxyPass e ProxyPassReverse anche se non l'ho menzionato nel mio messaggio. Per quanto riguarda il motivo per cui non utilizzare mod_jk, ho semplicemente bisogno di nascondere la porta tomcat dall'URL di accesso utente e nient'altro quindi mod-proxy sembra il più semplice –

+1

risolto la soluzione - probabilmente si devono avere le barre alla fine dell'URI. Questo è copiato dai miei file conf. –

3
RewriteEngine on 
RewriteRule ^/path$ /path/ [R] 
RewriteRule ^/path/(.*) /contextname/$1 [P] 

ProxyPass /contextname/ protocol://192.168.15.48:8080/contextname/ 
ProxyPassReverse /contextname/ protocol://192.168.15.48:8080/contextname/ 

Dove "protocollo" = "http", in questo caso ...

2

aggiungere una barra per entrambi i valori:

ProxyPass /path/ http://localhost:8080/contextname/

+0

Puoi spiegare come si differenzia dalla versione no-trainlish-slash? –

+0

non risolve il problema. –

1

Il vostro problema sono gli URL probabilmente autoreferenziali che l'applicazione produce. Non c'è molto che si può fare a questo proposito tranne che per

  1. cambiando l'applicazione o
  2. tutto riscrittura che sputa fuori.

L'opzione 2 può essere molto fragile. Vedere the tomcat docs per ulteriori informazioni.

+0

Questo è bello e chiaro, lo ha provato –

-2

Dire che il proprio dominio è bla.com e si desidera eseguire il proxy su bla.com/path su 8080/contextname.

Se si utilizza la seguente quindi in ultima analisi, arriva un reindirizzamento al contextName

ProxyPass /path http://localhost:8080/contextname 
ProxyPassReverse /path http://localhost:8080/contextname 

Risultato: bla.com/contextname (Redirect nei log di Apache)

Al fine di ottenere il risultato desiderato si deve includere una barra dopo il nome contesto.

ProxyPass /path http://localhost:8080/contextname/ 
ProxyPassReverse /path http://localhost:8080/contextname/ 

Risultato: bla.com/path

Un po 'in ritardo, ma è qui che Google ti porta.

+0

ma non funziona. – Jakki

Problemi correlati