Apache vs. Lighttpd vs. nginx

Ahoi,

letztens wurde ich im Free-Hack TeamSpeak gefragt, welcher Webserver meiner Meinung nach der beste ist und welchen ich einsetzen wuerde. Meine Wahl fiel auf “nginx”. Doch warum? Und wieso moechten immer mehr auf “nginx” umsteigen? Gibt es Alternativen und was ist mit der Nummer 1, naemlich “Apache”?

Werde daher die Vor- und Nachteile von Apache, Lighttpd und nginx hier auflisten – falls in Zukunft jemand einen vServer oder Dedicated Server zulegen moechte und ueberlegt, welchen Webserver er einsetzen solle, hoffe ich dieser Person mit diesem Blogeintrag zu helfen.

Um den Ueberblick nicht zu verlieren, werde ich nur die Argumente bzw. Funktionen auflisten, die meiner Meinung nach am wichtigsten sind.


der meistbenutze Webserver im Internet

Vorteile:
+ Open Source & Kostenlos
+ Durch (sehr viele) Module erweiterbar
+ Oft bereits vorinstalliert auf Linux Servern und seit Jahren die Nummer 1

Nachteile:
– Um einiges langsamer als leichtere Webserver
– Hat schon mit schwachen DoS/DDoS Attacken Probleme, der Arbeitsspeicher (und das Logverzeichnis) verbrauchen innerhalb kurzer Zeit viel “Platz” und vorallem auf einem Server mit wenig RAM kann es dann vorkommen, dass der RAM dann aufgebraucht ist und der Prozess einfach abstuerzt. Dann tut sich nichts mehr.
– veraltet und ueberfuellt (was die ganzen Module angeht), die Standard Konfiguration ist auch nicht optimal und muss meistens angepasst werden
– Die Entwicklung ist vergleichsweise langsam


fly light.

Vorteile:
+ Open Source & Kostenlos
+ hat einige Erweiterungen
+ Niedriger CPU Load und RAM verbrauch im Vergleich zu Apache, auch bei “Belastung”
+ Serverlastverteilung moeglich und schneller als Apache
+ Fastcgi & HTTP Proxy Support verfuegbar

Nachteile:
– Die Entwicklung geht aehnlich wie bei Apache relativ langsam voran


der russische Ueberflieger

Vorteile:
+ Wird vorallem auf großen Seiten wie Rambler.ru, WordPress.com, GitHub, SourceForge, ComputerBase, Golem.de, FastMail, Hulu, 4chan und YouPorn eingesetzt
+ Eignet sich wunderbar als Webserver und/oder Reverse Proxy zur Serverlastverteilung
+ Open Source & Kostenlos
+ Es wird stets dran weiterentwickelt, fast monatlich gibt es updates
+ Vorallem der CPU Load & Ram Verbrauch sind um einiges niedriger als bei Apache oder Lighttpd (Es gibt einen interessanten Artikel, der Lighttpd und nginx vergleich: http://www.wikivs.com/wiki/Lighttpd_vs_nginx )
+ Viel bessere Performance als Lighttpd oder Apache, druecken diese zwei Zitate aus:
” * in my simple stress tests cpu usage showed lighttpd at 98% while nginx was never more than 52%.

* Nginx performed almost the same as lighttpd but cpu load was much better with nginx. (LA never got more than 5 while lighttpd bumped it up to ~10, and apache to 20+ while testing with the wordpress setup) Btw, can’t even compare it to apache, which almost crashed my box when testing the sample wordpress install.( 10000 requests, 1000 concurrent) ”
Aus http://www.wikivs.com/wiki/Lighttpd_vs_nginx
+ Die Konfiguration ist einfach und uebersichtlich, es gibt ein großes Wiki mit Konfigurations Beispielen

Nachteile:
– nginx bringt leider nicht wie Lighttpd ein FastCGI Modul mit, um ordnungsgemaess mit PHP zu laufen, daher muss entweder FastCGI (nach)installiert werden oder man greift auf das seit PHP 5.3 vorhandene “PHP Modul” php-fpm zu.

Fazit:
Wer eine Seite mit genug RAM und CPU Ressourcen hat und lieber mal schnell und unkompliziert starten will, kann den – meiner Meinung nach – veralteten Webserver Apache einsetzen, sollte ihn dann aber gut konfigurieren. Wer alle Apache Module benoetigt, kann auch zu Litespeed wechseln, welches schneller und besser, jedoch auch kostenpflichtig ist. Ich wuerde aber niemandem raten, seine Seite in der heutigen Welt noch mit Apache zu betreiben, da es einfach “zurueckgeblieben” ist, es ist die Nr. 1 aber es gibt einfach bessere und schnellere Alternativen.

Nun nochmal zu den Fragen am Anfang zu meinem Eintrag, mein persoenlicher Gewinner ist nginx. Die Vorteile ueberwiegen, die Konfiguration ist einfach und es kommt gut mit vielen Requests zurecht. Auch die Statistiken sprechen fuer sich:

“Laut der Netcraft Statistik wurden im November 2009 6,42 % aller Websites, die in der Statistik mit aufgenommen wurden, mit nginx betrieben, in totalen Zahlen sind dies 14.988.610 Webserver. Dabei konnte nginx laut Netcraft starke Zuwächse verbuchen, im Oktober 2009 waren es noch 5,99 % oder in ganzen Zahlen 13.813.997 Websites die mit nginx betrieben wurden. Dies ergibt ein Wachstum von etwa 1,1 Millionen Webserver seit Oktober. Innerhalb der letzten drei Monate kann nginx einen Zuwachs von circa 3,5 Millionen Webserver verzeichnen. Dies entspricht in etwa dem Wachstum vom Apache HTTP Server und liegt weit über dem Zuwachs von 200.000 Webservern, die Microsoft mit dem Microsoft Internet Information Services Webserver verbuchen konnte.

In Russland steckt nginx laut der offiziellen Website hinter über 20 % aller Domains. In absoluten Zahlen standen im Mai 2009 mit knapp 2,5 Millionen Websites die meisten nginx-Server in China, gefolgt von 2,4 in den Vereinigten Staaten. Erst auf Platz 3 folgte mit 580.000 Russland, in Deutschland waren es laut Statistik knapp 45.000 mit nginx-Server.”
Aus http://de.wikipedia.org/wiki/Nginx

Wer will kann auch die aktuellen Statistiken vom Januar 2011 sehen:
http://news.netcraft.com/archives/2011/01/12/january-2011-web-server-survey-4.html

Und wie man sieht ist die Anzahl an Server, welche nginx als webserver einsetzen weiter gestiegen.

Abschließend bleibt noch gesagt, dass im Endeffekt jeder den Webserver benutzen sollte, mit dem er gut zurecht kommt und auf den vServern, welche ich besitze oder einrichte, sind nginx oder lighttpd immer meine erste Wahl.

22 Replies to “Apache vs. Lighttpd vs. nginx”

  1. Hoi,

    sehr interessant muss man sagen.

    Bei meinem VServer von Host Europe hab ich leider Apache2 vom “werk” aus installiert.
    Werd ich die Tage aber mal ersetzen…

    Ich wollte Woltlab installieren.. Was eignet sich dafür am besten? Nginx oder dann vllt doch eins der anderen?

    Oder vllt. sogar G-WAN?

    Danke!

  2. @ BuntspechT: G-WAN kenn ich nicht einmal und scheint sich bisher auch noch nicht richtig durchsetzen zu koennen. Werde es vllt mal lokal testen.

    @ Teth0rux: Nginx sollte mit Woltlab eigentlich keine Probleme haben.

    Mein Blog laeuft seit dem Umzug vom CINIPAC Webspace auf nen eigenen VPS mit nginx und hatte bisher keine groesseren Probleme damit.

    Wuerd dir daher mal empfehlen, nginx zu testen, notfalls kannst du ja noch einmal Apache2 installieren.

  3. toller vergleich, wenn ein webserver soviel text bekommt wie die beiden anderen zusammen…

    warum bekommt der beitrag nicht gleich den namen nginx ?!

  4. Wie du aus meinen ersten Saetzen erkennen solltest, habe ich von Anfang an nginx als Favoriten gewaehlt und bin auf ihn daher naeher eingegangen.

  5. Danke! Ein hilfreicher Vergleich. Habe bisher nur mit Lighttpd und Apache gearbeitet, werde nun aber auch mal nginx testen. Vielleicht lohnt es sich ja wirklich 😉

  6. Ich kann den Hiawatha Webserver noch empfehlen der ist schon bald in der Konfiguration DAU sicher und hat schon onboard Sicherheitsfeatures integriert ohne das man Patches aus tausenden Quellen installieren muss.

  7. Ich habe als jahrelanger Apache User auch den Nginx in einer Testumgebung ausprobiert und und war von der Konfiguration her nicht so begeistert. Die Geschwindigkeit ist sehr gut aber ich hatte mit Stabilitätsproblemen zu kämpfen.

    Eine Ideale Kombination für einige Projekte war der Einsatz einer Nginx Front-End Proxy Server Lösung. Nginx wurde vor den Apachen geschaltet um statische Inhalte auszuliefern. Alle anderen Anfragen wurden an den Apachen weitergegeben. Diese Lösung war ziemlich effizient, gerade bei Vielen Anfragen. Die CPU und RAM Last hat sich extrem verringert.

    mein persönliches Fazit: Nginx in Kombination mit Apache = TOP (als Stand-alone Lösung hat mir Nginx nicht so gut gefallen)

  8. Bei größeren Sites stimme ich voll und ganz zu. Wobei wir unsere größeren Sites (>50k uniques am Tag) im Moment noch über Lighty laufen lassen. Hört sich so an, als sollten wir mal nginx testen ;).

    Bei kleineren Sites/Blogs/Portalen zwischen 5 und 20k Uniques am Tag benutzen wir immer noch Apache2. Einfach deswegen weils hier keine Probleme bzgl. htaccess Kompatbilität gibt und weil es komfortabler ist den Kram mit einem Panel zu verwalten (Ispconfig o.ä.)

    Cheerio
    Andreas

  9. Guter Blogeintrag , aber es gibt da noch einen webserver der immer mehr herrausticht und das cherokee , in manchen punkten versagt er gegenüber von nginx , aber wenn man eine durschnittliche Seite nimmt die mit paar features hier und da geschmückt ist u.s.w ist cherokee ganz vorne dabei und für die statischen sachen kann man nginx immer noch für den statischen content nutzen. Dazu hat cherokee noch ein ziemlich geiles webpanel und der Ressourcenverbraucht kann auch mit nginx mithalten .

  10. >(und das Logverzeichnis) verbrauchen innerhalb kurzer Zeit viel >“Platz”
    Und das soll bei einem anderen Webserver anders sein?

    >dass der RAM dann aufgebraucht ist
    Worker / Threads optimieren, dann wird nicht der gesamte Ram verbraucht

    >+ Fastcgi & HTTP Proxy Support verfuegbar
    Gibts bei Apache ebenfalls

    Bei high Traffic Seiten empfiehlt sich generell nginx oder litespeed mit, falls möglich, aktivierten (webserver) Caching.

Leave a Reply

Your email address will not be published.