HTTP-Rückgabe 503 Service Nicht verfügbar mit mod_proxy für Tomcat 8

81

Ich versuche, Tomcat in Apache zu integrieren. Mein Ziel ist es, alle Anfragen mit http://localhost/myappan umzuleiten http://localhost:8080

Ich habe diese Anleitung befolgt: http://tomcat.apache.org/tomcat-8.0-doc/proxy-howto.html

Mein httpd.confsieht so aus:

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

Meine server.xml in apache-tomcat sieht folgendermaßen aus:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" proxyPort="80" />

Wenn ich jetzt die URL versuche http://localhost/myapp, gibt es einen 503 Service UnavailableFehler.

Sowohl Tomcat als auch Apache sind betriebsbereit. Die URL http://localhost:8080funktioniert gut.

Kann es ein Problem mit Dateiberechtigungen geben?

Für tomcatden Benutzer und die Gruppe sind root/rootund für httpd, der Benutzer und die Gruppe sindapache/apache

Vermisse ich etwas oder mache ich es falsch?

Die HTTPD-Version ist 2.4.6 und die Tomcat-Version ist 8.0

Die httpd-Fehlerprotokolle:

[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

Gelöst!

Die Antwort ist hier: http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/

user2354302
quelle
3
Danke für den Tipp. Ich fand diese sysadminsjourney.com/content/2010/02/01/…, die das Problem löste
user2354302
Besser Sie entfernen Wiederholungs- und Timeout-Option und überprüfen
KNOWARTH
3
FWIW, ich habe den 503-Fehler erhalten, aber mit einer Zeitüberschreitung. Es stellte sich heraus, dass ich für meine ProxyPass*Leitungen meinen tatsächlichen Servernamen nicht verwenden konnte und stattdessen entweder localhostoder meine IP-Adresse verwenden musste, z. B. ProxyPass / http://localhost/funktionierte, ProxyPass / http://example.com/aber nicht.
Inanutshellus

Antworten:

129

(Vom OP in einer Fragebearbeitung beantwortet. In eine Community-Wiki-Antwort konvertiert. Siehe Frage ohne Antworten, aber Problem in den Kommentaren gelöst (oder im Chat erweitert) )

Das OP schrieb:

Die Antwort ist hier: http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/

Welches ist ein Link zu einem Blog, der erklärt:

SELinux unter RHEL / CentOS wird standardmäßig ausgeliefert, sodass httpd-Prozesse keine ausgehenden Verbindungen initiieren können. Genau das versucht mod_proxy.

Wenn dies das Problem ist, kann es durch Ausführen von:

 /usr/sbin/setsebool -P httpd_can_network_connect 1

Eine genauere Informationsquelle finden Sie unter https://wiki.apache.org/httpd/13PermissionDenied

Brian Tompsett - 汤 莱恩
quelle
3
Ich denke, es ist nicht der einzige Grund für 503. Weil SELinux deaktiviert ist. Möglicherweise liegt der VirtualHost-Konfigurationsfehler vor.
Stamaimer
6

das hat bei mir funktioniert:

ProxyRequests     Off
ProxyPreserveHost On
RewriteEngine On

<Proxy http://localhost:8123>
Order deny,allow
Allow from all
</Proxy>

ProxyPass         /node  http://localhost:8123  
ProxyPassReverse  /node  http://localhost:8123
Daniel
quelle
1
Was ist der Dateiname und Speicherort?
Manish
2
Plötzlich funktionierte der Apache-Proxy heute nicht mehr nur für 443 auf dem lokalen Computer mit der IP 1.2.3.4, sondern wechselte von ProxyPass / http:// 1.2.3.4:1234 zu ProxyPass / http://localhost:1234 (ebenfalls für ProxyPassReverse) - ich weiß nicht, warum dies heute passiert ist. UnattendedUpdate hat keine Apache-bezogenen Inhalte installiert und wurde heute nicht ausgeführt.
Eli
@ Verwalten Sie die Datei /etc/apache2/sites-available/your-domain.com-le-ssl.conf oder das Centos-Äquivalent. und ja, my-dom.com: <port> in localhost zu ändern: <port> hat auch für mich auf ubunbtu
Nelles
5

Problem sofort beheben, es hängt mit der inneren Sicherheit zusammen

Wir, SnippetBucket.com, das für Enterprise Linux RedHat arbeitet, haben festgestellt, dass der httpd-Server weder Proxy noch Localhost oder 127.0.0.1 noch eine andere externe Domain ausführen kann.

Wie im Serverprotokoll untersucht gefunden

[error] (13)Permission denied: proxy: AJP: attempt to connect to
   10.x.x.x:8069 (virtualhost.virtualdomain.com) failed

Das Überwachungsprotokoll hat ein ähnliches Portproblem festgestellt

type=AVC msg=audit(1265039669.305:14): avc:  denied  { name_connect } for  pid=4343 comm="httpd" dest=8069 
scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket

Aufgrund der internen Standardsicherheit von Linux kann diese Ursache jetzt behoben werden (vorübergehend)

 /usr/sbin/setsebool httpd_can_network_connect 1

Beheben Sie ein dauerhaftes Problem

/usr/sbin/setsebool -P httpd_can_network_connect 1
Tejas Panzer
quelle
0

In CentOS Linux Release 7.5.1804 konnten wir dies erreichen, indem wir / etc / selinux / config bearbeiteten und die Einstellung von SELINUX wie folgt änderten:

SELINUX=disabled
Paul Cuddihy
quelle