Inoltro di richieste apache (porta 80) a Tomcat (porta 8080)?


8

Voglio eseguire un'applicazione Tomcat tramite un normale URL del sito Web, ad esempio www.xyz.com. Vorrei che la radice di questo dominio fungesse da directory di base per l'applicazione Web, quindi ogni richiesta www.xyz.com/a/b/cdiventa www.abc.com:8080/myApp/a/b/c. Idealmente, sarei in grado di farlo in modo trasparente e solo per determinate webapp.

www.abc.com:8080 dovrebbe ancora rispondere alle richieste.

Cosa devo fare per farlo accadere?

Risposte:


14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

Ulteriori informazioni su mod_proxy


questa è la soluzione migliore per farlo
Mike,

1
Per affrontare il lato "solo per determinate webapp", basta approfondire il percorso di reindirizzamento. Quindi: ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c Per eseguire il proxy di tutti tranne determinati percorsi, lasciare la riga ProxyPassReverse ma sostituisci le righe ProxyPass con RewriteRules (assicurandoti di utilizzare l'opzione [P] per eseguire il proxy anziché reindirizzare) e creare regole precedenti per non proxy quei percorsi. RewriteRule / notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
Jeremy M

dove aggiungo quelle righe?
Mina Michael,

@MinaMichael La documentazione di mod_proxy afferma: Contesto: configurazione del server, host virtuale, directory
ptman

3

Un metodo più semplice per farlo è quello di aggiungere una voce di host virtuale nel file di configurazione di Apache. Di solito situato in / etc / httpd / conf, aggiungi qualcosa di simile alla fine della sezione Host virtuale:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Riavvia il servizio Apache e il gioco è fatto.


3

A tale scopo puoi usare mod_rewrite in Apache. Carica mod_rewrite in Apache e nel tuo vhost www.xyz.com aggiungi la seguente regola:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

Questo dovrebbe fare la magia.

Maggiori informazioni su mod_rewrite qui .

EDIT : per mantenere il nome del sito nei browser, usa anche mod_proxy semplicemente aggiungendo una [P] alla fine di RewriteRule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

Questo costringerà Apache a fungere da proxy per quell'URL invece di riscriverlo.


Ciò provoca il reindirizzamento effettivo del browser. Funziona, ma preferirei che il sito apparisse www.xyz.comdal lato dell'utente.
Stefan Kendall,

1
usa anche mod_proxy e alla fine di RewriteRule aggiungi a [P], in questo modo: RewriteRule ^ / (. *) abc.com:8080/myApp/$1 [P]. Ho anche modificato la risposta sopra per includere queste informazioni.
Marco Ramos,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.