2013-07-04 17 views
58

Chciałem odwrócić proxy usługi internetowej z mojego serwera Tomcat za pomocą serwera WWW Apache. I zostały zmodyfikowane httpd.confUstawienia mod_proxy na serwerze 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 

serwer My Tomcat działa na porcie 8080, teraz gdy uruchamiam localhost/root, otrzymuję błąd 500 wewnętrzny błąd serwera.

Ten ostatni wpis w error_log jest:

 
[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. 
Ostatni wpis w access_log jest:
 
127.0.0.1 - - [04/Jul/2013:14:17:00 -0400] "GET /ROOT HTTP/1.1" 500 528 

Każdy pomysł na to, co robię źle tutaj?

+0

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

+0

Wszelkie dzienniki w dziennikach \ access.log? – aldux

+0

Hej, tak że nie działa, to jak httpd.conf wygląda modułów LoadModule proxy_module/mod_proxy.so AllowOverride żaden wymagać od wszystkich odmówiono ProxyPass/ROOT localhost: 8080/root ProxyPassReverse localhost: 8080/ROOT/ROOT – user1386101

Odpowiedz

97

To zajęło trochę czasu, ale wymyśliłem, jak to zrobić. Jest jeszcze jeden moduł, który musi zostać załadowany. Oto, co wygląda na 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 

To działa na pewno. :)

+48

'sudo a2enmod proxy' ' sudo a2enmod proxy_http' 'sudo usługa apache2 restart' – lcapra

+9

THIS proxy_http jest wymagany! – dardo

+0

Pochodzę ze świata, w którym używałem mod_proxy i mod_proxy_ajp przez YEARS, musisz zastąpić ajp modułem http w konfiguracjach innych niż java. Kluczem jest ten błąd w dziennikach serwera Apache: AH01144: Obsługa protokołu nie była ważna dla adresu URL – ed209

68

Ponieważ jest to łatwo przeoczyć, należy zwrócić uwagę na komentarz @ Muka za:

sudo a2enmod proxy 
sudo a2enmod proxy_http 
sudo service apache2 restart 

Upewnij się, aby umożliwić obu modułów proxy i proxy_http!

+5

^to uratowało mnie przed moją 20-godzinną agonią. Dzięki! –

+0

Ten mały brakujący 'a2enmod proxy_http' również sprawił, że straciłem 3 godziny ... – Basj

15

Oprócz innych drobnych odpowiedzi, jeśli buforowania do punktu końcowego HTTPS, musisz włączyć mod_ssl i dodać SSLProxyEngine on do vhost

Powiązane problemy