So richten Sie den Apache -Webserver -Proxy vor Apache Tomcat unter Red Hat Linux ein

So richten Sie den Apache -Webserver -Proxy vor Apache Tomcat unter Red Hat Linux ein

Zielsetzung

Unser Ziel ist es, Apache HTTPD so einrichten.

Betriebssystem- und Softwareversionen

  • Betriebssystem: Red Hat Enterprise Linux 7.5
  • Software: Apache HTTPD, Apache Tomcat

Anforderungen

Privilegierter Zugriff auf das System

Schwierigkeit

EINFACH

Konventionen

  • # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
  • $ - Angegebene Linux-Befehle, die als regelmäßiger nicht privilegierter Benutzer ausgeführt werden sollen

Einführung

Die Verwendung von Apache HTTPD als Proxy zu einem Apache -Tomcat -Anwendungscontainer ist ein übliches Setup. Es kommt mit vielen Anwendungsfällen, das trivialste ist, statische Inhalte aus zu bedienen httpd, Bereitstellung von Diensten, die eine schwere Geschäftslogik aus einer in Java geschriebenen Anwendung implementieren, die sich im Tomcat -Container befindet.

Durch das Erstellen eines Proxy können wir eine Art Front-End für die Anwendungsschicht erstellen, in der wir Sicherheitsmaßnahmen im Webserver einführen, Lastausgleich anwenden, bedingte Umleitung verwenden oder alle anderen vom Webserver bereitgestellten Funktionen verwenden können. Auf diese Weise müssen wir keine dieser Funktionen in unserer Anwendung implementieren und können die Funktionen für den Dienst selbst konzentrieren. Wir werden einen mit vollständigen Webserver für die Benutzer präsentiert, einige der URLs, die lautlos an den Anwendungscontainer weitergeleitet werden, auf die möglicherweise nicht für sich zugegriffen werden kann. Die Antworten der Anwendung werden an die Kunden weitergeleitet, die nicht wissen, dass sie etwas anderes als den Webserver gesprochen haben - das heißt, wenn wir darauf achten, keine Informationen (z. als eine Schicht.

Wir werden das AJP -Protokoll verwenden, das zwischen Webserver und Java -basierten Anwendungscontainern verwendet werden kann, um die Möglichkeit zu bieten, die Last zwischen mehreren Anwendungsservern auszugleichen. Einen Lastausgleichsvorräte sind jedoch nicht im Rahmen dieses Tutorials eingerichtet.

Wir werden unser Setup auf Red Hat Linux 7 konfigurieren.5, aber der Apache -Webserver, das AJP -Modul und der Apache Tomcat -Anwendungscontainer sind überall verfügbar. Daher ist dieses Setup mit kleinen Anpassungen wie Dateisystempfaden oder Servicenamen tragbar.



Installation der erforderlichen Software

Zuerst müssen wir die Dienste installieren, die wir nutzen werden. In einer Lastausgleichs -Setup -Tomcat -Server kann sich auf verschiedenen Maschinen befinden, und es werden häufig eine Farm von Containern anbieten, die einen Service aufbauen.

# Yum Installation HTTPD Tomcat Tomcat-Webapps

Wir installieren die Tomcat-Webapps Zu den Testzwecken befindet sich in diesem Paket eine Beispiele für Webanwendungen, die auf unserem Tomcat -Server für die Installation bereitgestellt werden. Wir werden diese Anwendung verwenden, um zu testen, ob unser Setup wie beabsichtigt funktioniert.

Jetzt können wir unseren Tomcat -Server aktivieren und starten:

# Systemctl aktivieren Tomcat
# Systemctl Start Tomcat

Und unser Webserver:

# SystemCTL aktivieren HTTPD
# Systemctl Start HTTPD

Der Standard httpd Die Installation enthält die Proxy -Module, die wir benötigen. Um zu überprüfen, ob es so ist, können wir den Webserver abfragen Apachektl:

# apachectl -m | GREP AJP Proxy_ajp_module (freigegeben) 
Kopieren

Anmerkung 1.X Apache -Versionen verwenden mod_jk Modul statt von Proxy_ajp.

HTTPD -Konfiguration

Die in Tomcat bereitgestellten Beispiele für Webanwendungen werden nach der Installation standardmäßig veröffentlicht Server-URL: 8080/Beispiele. Wir werden Proxy -Anfragen zum Port 80 des Servers (der Standard -HTTP -Port) des Servers anfordern, der etwas von der anfordert Server-URL/Beispiele von der bedient werden Beispiele Webanwendung, die in Tomcat bereitgestellt werden. Anfragen, die zu einer anderen URL auf dem Server kommen, werden vom Webserver bedient. Wir werden einige statische Inhalte einrichten, um diese Funktionalität anzuzeigen.

In unserem Beispiel wird der Server aufgerufen WS.Foobar.com. Damit der Proxy eine Textdatei mit Ihrem bevorzugten Editor unter dem Drop-In-Konfigurationsverzeichnis des Webservers erstellen kann, nämlich /etc/httpd/conf.D an Red Hat -Aromen mit der Erweiterung von .Conf. Unser Setup muss nicht direkt erreichbar sein, dass Tomcat direkt erreichbar ist, daher verwenden wir Lokalhost als Ziel Host in der /etc/httpd/conf.d/example_proxy.Conf Datei:

 Servername WS.Foobar.com proxyRequests off Proxypass/Beispiele AJP: // localhost: 8009/Beispiele Proxypassreverse/Beispiele ajp: // localhost: 8009/Beispiele  
Kopieren

Um auf der sicheren Seite zu sein, können wir überprüfen, ob unsere Konfiguration korrekt ist, bevor wir uns bewerben Apachektl:

# apachektl configtest syntax OK 
Kopieren

Wenn der Konfigurationstest einen Fehler wie die folgenden zurückgibt:

Konnte den Hostnamen WS nicht lösen.Foobar.com - ignorieren!

Wenn bedeutet unsere Servername Die Richtlinie ist ungültig, da sie vom Webserver nicht behoben werden kann. Entweder müssen wir es im (lokalen oder globalen) DNS registrieren oder eine Linie in der /etc/hosts Datei, die die öffentliche IP -Adresse des Hosts enthält, gefolgt von dem Namen, den wir in der obigen Konfiguration angegeben haben. Wenn die Hosts -Datei die IP bereits mit einem anderen Namen (möglicherweise dem echten Hostnamen) enthält, können wir den Servernamen nach den Namen des Hosts in derselben Zeile hinzufügen, wird das Setup funktioniert.

Nach erfolgreichem Test müssen wir die neue Konfiguration anwenden, indem wir den Webserver neu starten:

# Systemctl Neustart HTTPD neu starten


Tomcat -Konfiguration

Mit der Standardinstallation hört der Tomcat -Container AJP -Anforderungen an allen Schnittstellen auf Port 8009 an. Dies kann in der Hauptkonfigurationsdatei überprüft werden:

# anzeigen/usr/sharle/tomcat/conf/server.xml […]   […] 
Kopieren

Wenn wir den Tomcat -Container nicht benötigen und die Anwendungen für sich selbst erreichbar sind, können wir jeden Anschluss nur auf Localhost einstellen:

Steckeradresse = "127.0.0.1 "Port = ..."

Um sich zu bewerben, können wir Tomcat mit:

# Systemctl Tomcat neu starten

In unserer Labormaschine wird dies nicht tun, da wir sehen müssen, dass uns der gleiche Inhalt auf beiden Ports bedient wird 80 Und 8080.

Testen

Unser minimales AJP -Proxy -Setup ist abgeschlossen. Wir können es testen. Aus der Befehlszeile können wir das aufrufen Beispiele Anwendung direkt am Port 8080:

$ wget http: // ws.Foobar.com: 8080/Beispiele-2018-09-13 11: 00: 58-- http: // ws.Foobar.com: 8080/Beispiele auf Lösung von WS.Foobar.com (WS.Foobar.com)… . 10.104.1.165 Anschließen mit WS.Foobar.com (WS.Foobar.com) | 10.104.1.165 |: 8080… . in Verbindung gebracht. HTTP -Anfrage gesendet, erwartet auf die Antwort… . 302 gefunden Ort:/Beispiele/[folgende]-2018-09-13 11: 00: 58-- http: // ws.Foobar.Com: 8080/ Beispiele/ Wiederverwendung der vorhandenen Verbindung zu WS.Foobar.com: 8080. HTTP -Anfrage gesendet, erwartet auf die Antwort… . 200 OK Länge: 1253 (1.2K) [text/html] Saving to: 'examples' 100%[================================== ====================================================== ====================================================== ==================================>] 1,253 --.-K/s in den 0s 2018-09-13 11:00:58 (102 MB/s)-'Beispiele' gespeichert [1253/1253]
Kopieren

Und sehen Sie den angegebenen Inhalt:

$ schwanz Beispiele 

Apache Tomcat Beispiele

  • Servlets Beispiele
  • JSP -Beispiele
  • Beispiele für Websocket (JSR356)
  • Beispiele für Websocket
Kopieren

Und wenn wir dieselbe Anwendung durch unseren AJP -Proxy anrufen, sollten wir auch eine Antwort erhalten, während es im Dokumentroot des Webservers keinen Inhalt gibt:

$ wget http: // ws.Foobar.com/Beispiele-2018-09-13 11: 01: 09-- http: // ws.Foobar.com/Beispiele auf Lösung von WS.Foobar.com (WS.Foobar.com)… . 10.104.1.165 Anschließen mit WS.Foobar.com (WS.Foobar.com) | 10.104.1.165 |: 80… . in Verbindung gebracht. HTTP -Anfrage gesendet, erwartet auf die Antwort… . 302 gefunden Ort:/Beispiele/[folgende] --2018-09-13 11: 01: 09-- http: // ws.Foobar.com/ Beispiele/ Wiederverwendung der vorhandenen Verbindung zu WS.Foobar.com: 80. HTTP -Anfrage gesendet, erwartet auf die Antwort… . 200 OK Länge: 1253 (1.2K) [Text/HTML] Speichern auf: 'Beispiele.1' 100%[============================================= ====================================================== ====================================================== ========================>] 1,253 --.-K/s in 0s 2018-09-13 11:01:09 (101 MB/s)-'Beispiele.1 'gerettet [1253/1253]
Kopieren

Wenn alle funktionieren, erhalten wir eine Antwort mit demselben Inhalt, da die endgültige Antwort durch dieselbe Anwendung innerhalb des Containers geliefert wird:

$ schwanz Beispiele.1 

Apache Tomcat Beispiele

[… .]
Kopieren

Wir können unseren Setup auch mit einem Browser testen. Wir müssen alle URLs mit dem Namen des Servers als Host anrufen (zumindest den, der in der Proxiation ist). Dazu muss der Computer, der den Browser ausführt.

In unserer Laborumgebung haben wir Tomcat nicht deaktiviert, wenn wir die öffentliche Schnittstelle zuhören, damit wir sehen können, was bereitgestellt wird, wenn wir direkt auf dem Port gefragt werden 8080:



Tomcat Bereitstellung der Beispieleanwendung

Wir können den gleichen Inhalt durch den vom Webserver auf Port bereitgestellten AJP -Proxy erhalten 80:

HTTPD liefert der Beispiele -Anwendung mit AJP -Proxy

Während er als Proxy fungiert, httpd kann jeden anderen Inhalt bedienen. Wir können statische Inhalte erstellen, die auf einer anderen URL auf demselben Server erreichbar sind:

# Mkdir/var/www/html/static_content # echo "statischer Inhalt">/var/www/html/static_content/static.html
Kopieren

Indem wir unseren Browser auf diese neue Ressource verweisen, erhalten wir den neuen statischen Inhalt.

Statische Inhalte von HTTPD bereitgestellt

Wenn der Tomcat -Container nicht erreichbar wäre, wissen wir nicht, dass die Antwort an einem anderen Ort als dem Webserver kommt. Da wir nur eine bestimmte Anwendung veranlasst haben, ist die standardmäßige Root -Anwendung des Containers nicht erreichbar durch den Stellvertreter, wodurch vor allem jenseits des Webservers versteckt ist.

Abschluss

Der Apache -Webserver ist mit den Mitteln der Module hoch erweiterbar, eines davon ist das AJP -Proxy -Modul. Die obige Anleitung verwendet eine Maschine und setzt eine Anwendung mit dem Proxy aus.

Kombiniert mit anderen Modulen wie mod_security, Wir können unseren Service viele Funktionen hinzufügen, ohne dass sie innerhalb der Anwendung entwickelt werden müssen oder wenn dies erforderlich ist, um den Proxy mit einer einzigen Ausgabe der Konfigurationsdatei und dem Nachladen des Webservers zu einem anderen Endpunkt zu leiten, wodurch eine Migration oder die Erstellung von Migration erstellt wird oder die Einführung der neuen Veröffentlichung der Anwendung eine Frage von Sekunden. Das gleiche Nachladen kann den Besucher zu einer Seite führen, auf der die geplanten Ausfallzeiten erläutert werden, während die Wartung auf den Anwendungsservern durchgeführt wird. Die Anwendungsfälle eines AJP -Proxy sind nur durch die Fantasie des IT -Personals begrenzt.

Verwandte Linux -Tutorials:

  • Ubuntu 20.04 Tomcat -Installation
  • Dinge zu installieren auf Ubuntu 20.04
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Linux -Download
  • Kann Linux Viren bekommen?? Erforschung der Verwundbarkeit von Linux…
  • Tintenfisch -Proxy -Konfigurations -Tutorial unter Linux
  • Beste Linux -Distribution für Entwickler
  • GNU/Linux Allgemeiner Fehlerbehebungsleitfaden für Anfänger
  • Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…