Nginx oder Apache als Webserver vor Tomcat (Java App)?

7

Sie fragen sich nur, welcher Webserver zwischen Apache und Nginx von Tomcat besser unterstützt wird? Ich bin begeistert davon, Nginx für die Single-Threaded-Funktion zu verwenden. Ich möchte eine Java-App bereitstellen, die unter HTTPS ausgeführt wird.

Prost

sebarmeli
quelle
Und Sie möchten Tomcat nicht im Standalone-Modus ausführen?
Mailq
1
Ich dachte, die Verwendung eines Webservers vor Tomcat in der Produktion wäre eine bessere Vorgehensweise.
Sebarmeli
Sicherheitsleute werden nervös, wenn Sie Tomcat in der Produktion ausführen und Tomcat auf 80/443 hören, da Tomcat als Root ausgeführt werden muss. Wenn Sie jedoch Linux ausführen, können Sie IPchains verwenden, um Port 80 in 8080 und Port 443 in 8443 zu übersetzen und Tomcat als regulären Benutzer laufen zu lassen.
Mahnsc

Antworten:

3

Zuallererst: Tomcat kann schneller eigenständig ausgeführt werden (logischerweise, da kein Proxy erforderlich ist). Es ist wahrscheinlich nicht die sicherste Lösung, aber es ist schneller. :) :)

Apache kann den mod_jk-Connector verwenden, der AJP13 verwendet, wodurch Sie im Vergleich zum regulären HTTP-Proxy einen enormen Leistungsschub erzielen. Wenn Sie wirklich ein Frontend benötigen, wählen Sie Apache + mod_jk.

pauska
quelle
1
Bei unseren Lasttests einer sehr großen Anwendung hat AJP13 im Vergleich zu direktem HTTP-Proxy keinen Unterschied gemacht. Tatsächlich führte die Verwendung von nginx als Proxy für Tomcat über HTTP zu einer insgesamt höheren Skalierbarkeit mit derselben Hardware (wahrscheinlich, weil nginx ereignisbasiert ist und Apache für jede Verbindung einen gesamten Betriebssystem-Thread verwaltet). Wir hatten 1 Dual-Core-Proxyserver (je nach Test nginx 0.7.65 oder Apache 2.2.x) und sechs Server, auf denen eine Monster-Tomcat / JBoss-Anwendung für diesen Test ausgeführt wurde. Tomcat ist auch schlecht darin, statische Dateien im Vergleich zu Apache / Nginx bereitzustellen.
Rmalayter
@rmalayter: Entschuldigung, wenn mir das statische Bit nicht klar war, war das, was ich wirklich erwähnte, "Tomcat bedient Anwendungen schneller als eigenständige Anwendungen". Wie wurde Apache für Ihre Testumgebung konfiguriert? War es abgespeckt?
Pause
Wir haben die Standardpakete Apache und Nginx unter Ubuntu 10.04 verwendet, wobei nur wichtige Module aktiviert waren. Soweit Tomcat schneller "eigenständig" ist, ist dies für die meisten Produktionsanwendungen keine Option, da Tomcat nicht viele wichtige Webserverfunktionen unterstützt, ohne benutzerdefinierte Servlets oder Filter zu schreiben. Und es ist sehr langsam für die Bereitstellung statischer Dateien, was auch für viele Anwendungen von entscheidender Bedeutung ist.
Rmalayter
0

Apache -> Tomcat ist aufgrund der Anzahl der verfügbaren Anschlussoptionen wahrscheinlich etwas flexibler, aber Nginx soll extrem schnell sein. Abgesehen davon, wie mailq vorschlägt, könnten Sie mit Tomcat als Front-End zufrieden sein.

mahnsc
quelle