Próbuję zintegrować Tomcat z Apache. Moim celem jest przekierowanie wszystkich żądań
http://localhost/myapp
dohttp://localhost:8080
Postępowałem zgodnie z tym przewodnikiem: http://tomcat.apache.org/tomcat-8.0-doc/proxy-howto.html
Mój httpd.conf
wygląd wygląda tak:
Include conf.modules.d/*.conf
LoadModule proxy_module modules/mod_proxy.so
ProxyPass /myapp http://localhost:8080 retry=0 timeout=5
ProxyPassReverse /myapp http://localhost:8080
Mój server.xml w apache-tomcat wygląda następująco:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" proxyPort="80" />
Teraz, gdy próbuję adres URL http://localhost/myapp
, 503 Service Unavailable
wyświetla błąd.
Zarówno Tomcat, jak i Apache są uruchomione. Adres URL http://localhost:8080
działa poprawnie.
Czy może wystąpić problem z uprawnieniami do plików?
Dla tomcat
użytkownika i grupy są root/root
i dla httpd
, użytkownik i grupa sąapache/apache
Czy coś mi brakuje, czy robię to źle?
Wersja Httpd to 2.4.6, a wersja Tomcata to 8.0
Dzienniki błędów httpd:
[proxy:error] [pid 19905] (13)Permission denied: AH00957: HTTP: attempt to connect to 127.0.0.1:8080 (localhost) failed
[proxy:error] [pid 19905] AH00959: ap_proxy_connect_backend disabling worker for (localhost) for 0s
[proxy_http:error] [pid 19905] [client ::1:51615] AH01114: HTTP: failed to make connection to backend: localhost
Rozwiązany!
Odpowiedź jest tutaj: http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/
ProxyPass*
linii nie mogłem użyć mojej rzeczywistej nazwy serwera i zamiast tego potrzebowałem użyć jednego zlocalhost
moich adresów IP, np.ProxyPass / http://localhost/
Działało, aleProxyPass / http://example.com/
nie.Odpowiedzi:
(Udzielił odpowiedzi OP w edycji pytania. Przekonwertowano na odpowiedź wiki społeczności. Zobacz Pytanie bez odpowiedzi, ale problem rozwiązany w komentarzach (lub rozszerzony na czacie) )
OP napisał:
Który jest linkiem do bloga, który wyjaśnia:
Jeśli na tym polega problem, można go rozwiązać, uruchamiając:
Bardziej szczegółowe źródło informacji można znaleźć pod adresem https://wiki.apache.org/httpd/13PermissionDenied
źródło
to zadziałało dla mnie:
źródło
ProxyPass / http:// 1.2.3.4:1234
naProxyPass / http://localhost:1234
(tak samo zrobiono dla ProxyPassReverse) - nie wiem, dlaczego tak się dzisiaj stało. UnattendedUpdate nie instalowało rzeczy związanych z Apache i nie działało dzisiaj.Natychmiast rozwiąż problem, jest to związane z bezpieczeństwem wewnętrznym
My, SnippetBucket.com pracujący dla Enterprise Linux RedHat, stwierdziliśmy, że serwer httpd nie zezwala na działanie serwera proxy, ani lokalnego hosta, ani 127.0.0.1, ani żadnej innej domeny zewnętrznej.
Jak zbadać w znalezionym dzienniku serwera
Dziennik kontroli wykrył podobny problem z portem
Ze względu na wewnętrzne domyślne bezpieczeństwo Linuksa ta przyczyna, teraz do naprawienia (tymczasowa)
Rozwiąż stały problem
źródło
W CentOS Linux w wersji 7.5.1804 mogliśmy to zrobić, edytując / etc / selinux / config i zmieniając ustawienia SELINUX w następujący sposób:
źródło