Warum Apache vor einem anderen Webserver verwenden?

7

Ich habe viele Webserver-Setups gesehen, bei denen sich Apache vor einem anderen Webserver befindet. Die bekanntesten Beispiele hierfür sind die Java-Webserver, z. B. Glassfish, Tomcat usw. Worum geht es dabei? Mir ist klar, dass der Punkt, an dem Apache beispielsweise vor einem Mongrel-Cluster platziert wird, der Lastausgleich ist, aber was ist mit anderen Servern? Was sind die Gründe dafür?

Sasha Chedygov
quelle

Antworten:

11

Webanwendungsserver können ihre Anwendung gut hosten (Ruby, Java usw.), aber nicht so gut wie Apache statische Dateien hosten oder Lastenausgleich / Failover ( mod_proxy ), Sicherheit / Filterung ( mod_security ), Umschreiben ( mod_rewrite ) usw. Daher ist es durchaus üblich, Apache als Front-End zu verwenden, möglicherweise den gesamten statischen Inhalt bereitzustellen und dann Anforderungen an den Anwendungsserver (Mischling, Kater usw.) weiterzuleiten.

Apache ist ein gut geprüfter Code, der etwas mehr "um den Block" war als die neueren Server. Daher ist es sinnvoll, ihn als Server zu verwenden, der dem nicht vertrauenswürdigen Internet gegenübersteht. Dies bedeutet auch, dass Sie Ihre Anwendungsserver in Ihrem Netzwerk und Ihre Apache-Server in Ihrer DMZ platzieren können.

crb
quelle
3
Viele verwenden lighttpd oder thttpd aus den oben genannten Gründen.
Joe
@ Joe: Eine andere, die immer beliebter wird, ist NginX. Es ist unglaublich schnell und die Konfigurationsdatei ist speziell darauf ausgerichtet, als Frontend für den Lastenausgleich für mehrere Server verwendet zu werden.
Javier
Eine andere Frage: Wenn ich dies beispielsweise mit einem Java-Server hinter Apache tun würde, würde ich mehrere Instanzen verwenden? Vielen Dank.
Sasha Chedygov
+1 für Nginx wird von einigen sehr belebten Websites verwendet. Laut Netcraft als Reverse Proxy in der Ukraine, Russland, China und den USA sehr beliebt. news.netcraft.com/archives/web_server_survey.html
Taras Chuhay
0

Zu Ihrer anderen Frage -

Eine andere Frage: Wenn ich dies beispielsweise mit einem Java-Server hinter Apache tun würde, würde ich mehrere Instanzen verwenden?

Kommt drauf an :) Wie ist die Ladung? Wie ist die Speichernutzung? Wie würden Sie sie verteilen - mehrere Java-App-Server auf derselben Box? Verschiedene Boxen? Die entsprechende Konfiguration hängt davon ab, welches Problem Sie lösen möchten.

BZ.
quelle
Nun, ich frage mich nur, ob das irgendeinen Nutzen hätte. Ich verstehe, dass die meisten Ruby-Webanwendungen aus verschiedenen Gründen einen Mongrel-Cluster mit etwa 9 Mongrel-Instanzen verwenden. würde das auch für Jetty (Java) gelten? Zu diesem Zeitpunkt verwende ich nur einen Webserver und einen Datenbankserver, keinen Anwendungsserver, da ich ihn nicht benötige (nicht genügend Last).
Sasha Chedygov