Come configurare mod_proxy su ProxyPass in base a http vs https?


9

Apache Tomcat funziona con SSL abilitato. Ho Apache HTTP Server che funge da proxy inverso, quindi il mio se gli utenti colpiscono http: // myserver / tomcat / vengono passati a http: // myserver: 8080 .

ProxyPass /tomcat/ http://myserver:8080/
ProxyPassReverse /tomcat/ http://myserver:8080/

Ho un server HTTP Apache configurato anche per SSL, quindi quando gli utenti colpiscono https: // myserver / tomcat / dovrebbero essere passati a https: // myserver: 8443 / .

Con l'attuale configurazione ProxyPass e ProxyPassReverse verranno reindirizzati all'URL non ssl. Come posso impostare il proxy pass in modo che reindirizzi a protocollo e porta diversi in base alla richiesta in arrivo?

Cioè, se qualcuno arriva tramite HTTPS come posso reindirizzarlo al mio tomcat @ https: // myserver: 8443 ?


Aggiornare:

@ Mike-Insch

Provai:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /tomcat/ https://myserver:8443/
    ProxyPassReverse /tomcat/ https://myserver:8443/
</VirtualHost>

Ora quando visito: https: // myserver / tomcat / ottengo la "pagina non trovata". Nel registro degli errori vedo "Il file non esiste: / var / apache2 / htdocs / tomcat"

Il che è corretto, ma mi aspettavo che la richiesta fosse indirizzata a Tomcat in esecuzione su https: // myserver: 8443 / .

Immagino di dover guardare di più gli host virtuali, a meno che qualcosa non appaia evidentemente sbagliato.


Non penso che tu abbia bisogno della NameVirtualHostdirettiva qui. Inoltre, dovrai aggiungere le direttive appropriate per abilitare SSL nella tua <VirtualHost *:443>sezione.
Mike Insch,

Risposte:


5

È necessario farlo tramite due <VirtualHost *:X>direttive indipendenti . Le HTTPdirettive entrano <VirtualHost *:80>mentre le HTTPSdirettive entrano <VirtualHost *:443>. Regola come richiesto se sul tuo server sono configurati più host virtuali basati su indirizzo o basati su nome. Consulta la documentazione di Apache 2 per tutti i dettagli.


Quindi ho aggiunto quanto segue: NameVirtualHost *: 443
codecraig

3
Non dimenticare di aggiungere SSLProxyEngine alla direttiva
Ryan

6

Per completezza: se è un'opzione, è una buona idea terminare SSL su Apache, piuttosto che far gestire anche Tomcat. Fornire Tomcat è accessibile solo da Apache è più semplice e non meno sicuro.

In questa configurazione, Apache eseguirà il proxy HTTP e HTTPS per http://myserver:8080/:

NameVirtualHost *:443

<VirtualHost *:80>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

<VirtualHost *:443>
    ProxyPass /tomcat/ http://myserver:8080/
    ProxyPassReverse /tomcat/ http://myserver:8080/
</VirtualHost>

1
In tal caso, non è necessario ripetere le direttive proxy in entrambi gli host virtuali. Puoi semplicemente estrarli nel contesto del server.
Amit Naidu,
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.