Auf einem CentOS 7-Webserver stellt Tomcat War-Dateien hinter einem Apache-HTTPD-Reverse-Proxy bereit. Dies funktioniert einwandfrei, wenn die WAR-Dateien alle Server-Code sind. Wenn jedoch neben Server-Code auch Client-Code (in diesem Fall AngularJS) in den War-Dateien enthalten ist, wirft Apache-HTTPD 2.4 bei jeder Abhängigkeit der HTML-Kerndatei in der App den folgenden Proxy-Fehler aus, wenn domain3.com
in einem Webbrowser Folgendes eingegeben wird:
[proxy:error] AH00898: DNS lookup failure for: resources returned by /res$
Um zu bestätigen, dass es sich um einen Apache-Fehler und nicht um einen Tomcat-Fehler handelte, öffnete ich den Port 8084 für die App in Firewalld und lud sie anschließend. Dabei stellte ich fest, dass domain3.com:8084
die App, einschließlich des clientseitigen AngularJS-Codes, perfekt lief.
Welche Konfigurationsänderungen sind erforderlich, damit Apache httpd 2.4 die Includes für die clientseitige App bereitstellen kann, die in den Krieg einbezogen wird, wenn Anforderungen domain3.com
in Webbrowser eingegeben werden?
Die vollständigen httpd-Protokolle für eine solche domain3.com
Transaktion lauten:
[Tue Nov 03 14:31:57.662516 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013resources returned by /res$
[Tue Nov 03 14:31:57.747345 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013resources returned by /res$
[Tue Nov 03 14:31:57.752815 2015] [proxy:error] [pid 9294] [client client.ip.addr:57370] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:57.757663 2015] [proxy:error] [pid 11936] [client client.ip.addr:57372] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/an$
[Tue Nov 03 14:31:57.758121 2015] [proxy:error] [pid 4325] [client client.ip.addr:57371] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:57.758509 2015] [proxy:error] [pid 23006] [client client.ip.addr:57373] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/an$
[Tue Nov 03 14:31:57.762749 2015] [proxy:error] [pid 9325] [client client.ip.addr:57374] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:57.829953 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:57.846174 2015] [proxy:error] [pid 9294] [client client.ip.addr:57370] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:57.851022 2015] [proxy:error] [pid 4325] [client client.ip.addr:57371] AH00898: DNS lookup failure for: server.ip.addr:8013somecontroller.js returned$
[Tue Nov 03 14:31:58.049885 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:58.207199 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:58.320704 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:58.428737 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:58.523564 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:58.611546 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013js returned by /js/lib/ang$
[Tue Nov 03 14:31:58.708439 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013somecontroller.js returned$
Die Tomcat-Protokolle für dieselbe domain3.com
Transaktion zeigen lediglich eine erfolgreiche GET-Anforderung:
client.ip.addr - - [03/Nov/2015:14:31:57 -0500] "GET / HTTP/1.1" 200 2944
Der Client erkennt diese als 502-Fehler für die Abhängigkeiten, jedoch nicht für index.html
, die einzige Ressource, die korrekt bereitgestellt wird.
Der relevante Abschnitt /etc/httpd/conf.d/virtualhosts.conf
lautet:
<VirtualHost www.domain3.com:80>
ServerName www.domain3.com
ServerAlias domain3.com
ErrorLog /var/log/httpd/domain3_com_error.log
CustomLog /var/log/httpd/domain3_com_requests.log combined
ProxyPass / ajp://server.ip.addr:8013
ProxyPassReverse / ajp://server.ip.addr:8013
</VirtualHost>
Was muss ich also ändern, um httpd
die Anforderungen für die Include-Dateien im clientseitigen Teil der App bereitzustellen domain3.com
?
Antwort1
ProxyPass
Fügen Sie Ihren und -Anweisungen den fehlenden abschließenden Schrägstrich hinzu ProxyPassReverse
:
ProxyPass / ajp://server.ip.addr:8013/
ProxyPassReverse / ajp://server.ip.addr:8013/