2013-07-04 17 views
58

Volevo invertire il proxy di un servizio Web dal mio server tomcat utilizzando il server Web Apache. Ho modificato il httpd.confSetup mod_proxy su server http apache

LoadModule proxy_module modules/mod_proxy.so 

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

ProxyPass   /ROOT http://localhost:8080/ROOT 
ProxyPassReverse /ROOT http://localhost:8080/ROOT 

server di mio Tomcat viene eseguito sulla porta 8080, ora quando corro localhost/ROOT, ottengo l'errore 500 Internal Server Error.

Questa ultima voce della error_log è:

 
[Thu Jul 04 14:17:00.097359 2013] [proxy:warn] [pid 18980:tid 4476780544] [client 127.0.0.1:50525] AH01144: No protocol handler was valid for the URL /ROOT. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule. 
L'ultima voce della access_log è:
 
127.0.0.1 - - [04/Jul/2013:14:17:00 -0400] "GET /ROOT HTTP/1.1" 500 528 

Qualche idea su quello che sto facendo male qui?

+0

ProxyPassReverse http: // localhost: 8080/ROOT /ROOT –

+0

Qualche registro nei registri \ access.log? – aldux

+0

Hey, in modo che non ha funzionato, questo è il modo httpd.conf sembra LoadModule proxy_module/mod_proxy.so AllowOverride nessuno richiedere a tutti i negato ProxyPass/ROOT localhost: 8080/ROOT ProxyPassReverse localhost: 8080/ROOT/ROOT – user1386101

risposta

97

Quindi ci è voluto del tempo ma ho capito il modo di farlo. C'è un altro modulo che deve essere caricato. Ecco come appare httpd.conf

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

ProxyPass   /ROOT http://localhost:8080/ROOT 
ProxyPassReverse /ROOT http://localhost:8080/ROOT 

Questo funziona di sicuro. :)

+48

'sudo a2enmod proxy' ' sudo a2enmod proxy_http' 'sudo servizio apache2 restart' – lcapra

+9

QUESTO proxy_http è richiesto! – dardo

+0

Provenendo da un mondo in cui ho usato mod_proxy e mod_proxy_ajp per YEARS, è necessario sostituire ajp con il modulo http in configurazioni non java. L'indizio è questo errore nei registri di Apache: AH01144: nessun gestore di protocollo era valido per l'URL – ed209

68

Dal momento che è facile trascurare, prestare attenzione a commentare @ di Muka:

sudo a2enmod proxy 
sudo a2enmod proxy_http 
sudo service apache2 restart 

assicurati di attivare entrambi i moduli proxy e proxy_http!

+5

^questo mi ha salvato dalle mie 20 ore di agonia. Grazie! –

+0

Anche questo poco mancante 'a2enmod proxy_http' mi ha fatto perdere 3 ore ... – Basj

15

In aggiunta alle altre risposte belle, se stai proxying a un https endpoint, è necessario attivare mod_ssl e aggiungere SSLProxyEngine on al vostro vhost