Was fehlt Nginx an Apache?

11

Nginx soll viel ressourceneffizienter und einfacher zu konfigurieren sein als Apache. Ein Freund sagte mir: "Es kann einige Dinge nicht tun, die Apache tun kann, aber ich brauche diese Dinge sowieso nicht."

Trotzdem bin ich neugierig: Was kann Apache tun, was Nginx nicht kann? Ich brauche keine vollständige Liste, nur eine allgemeine Vorstellung von Szenarien, in denen Apache die bessere Wahl wäre.

Nathan Long
quelle

Antworten:

9

Ich denke, die größten Teile, die Nginx noch fehlt, sind die volle WebDAV-Unterstützung. Nahezu jeder andere Aspekt wird entweder vom Kernmodul oder von einem Drittanbieter-Modul abgedeckt.

Nginx unterstützt Dinge wie mod_php nicht von Natur aus, daher bin ich mir nicht sicher, ob Sie sagen können, dass Nginx diese Teile vermisst. Es ist eher so, als würde Nginx Ihnen ziemlich eindringlich sagen, dass es dumm ist, dies zu verwenden.

Martin Fjordvald
quelle
+1 Obwohl ich nicht der Meinung bin, dass jede mögliche Verwendung von mod_php und ähnlichen Dingen "dumm" ist, stimme ich dem Rest zu.
Chris S
Ist das ein PHP-Hasser-Kommentar oder hat mod_php wirklich etwas Schlechtes? Verknüpfung? Ich frage, weil fast alles, was ich habe, mod_php verwendet .. und bitte, es ist mir egal, was Sie für besser halten, ich möchte nur wissen, was mit mod_php falsch ist
Safado
3
mod_php hat nichts mit PHP selbst zu tun. Es hat damit zu tun, wie PHP mit Apache interagiert. Das Problem ist, dass beim Einbetten von PHP in Apache der Prozess, der PHP verarbeitet, und der Prozess, der eine 2-KB-Bilddatei verarbeitet, genau der gleiche Prozess ist. Wenn der Endclient langsam ist, kann Ihr sehr teurer Prozess 2 Sekunden lang ein kleines Image bereitstellen. Dies ist die Zeit, die er nicht für PHP aufwenden kann.
Martin Fjordvald
+1 "Es ist eher so, als würde Nginx Ihnen ziemlich eindringlich sagen, dass es dumm ist, dies zu verwenden."
4

Apache verfügt über eine große Anzahl von Modulen, die einige Bereitstellungsszenarien ermöglichen, die mit Nginx nicht möglich sind.

Ein Beispiel ist das mod_dav_svnHosten von Subversion über HTTP. Es ist nur für Apache verfügbar. Andere bemerkenswerte Beispiele sind Dinge wie mod_perloder mod_php. Während die meisten herkömmlichen Setups auch über FCGI (oder WSGI oder Passagier) durchgeführt werden können, kann es von Vorteil sein, einen tatsächlichen Interpreter im Prozess zu haben, wenn Sie z. B. benutzerdefinierte Authentifizierungsschemata im Webserver implementieren müssen (wie dies für Git- oder SVN-Hosting mit der Fall ist) Redmine / ChiliProject).

Im Allgemeinen hat Ihr Freund Recht: Die meisten gängigen Bereitstellungsszenarien können auch mit nginx gelöst werden, aber Apache ist immer noch flexibler, wenn Sie weitere "spezielle" Dinge erstellen müssen.

Holger Just
quelle
3

Die Kurzversion der Geschichte ist, dass Apache viele Plugins und Communitys hat. Nginx gibt es vergleichsweise nur für kurze Zeit und verfügt daher noch nicht über die Community-Codebasis.

Wenn Leute mich fragen, was der Unterschied ist, ist Nginx ein Steakmesser, es ist gut für eine Vielzahl von Anwendungen und macht einige Dinge sehr gut. Apache ist ein Schweizer Taschenmesser, es hat eine Menge verschiedener Funktionen und macht alle einigermaßen gut.

Chris S.
quelle
Ich denke, Sie sind vielleicht etwas veraltet, was Nginx kann. In einigen Bereichen ist es weitaus vielseitiger als Apache. Ohne HTTP / 1.1-Proxy und WebDAV kann ich mir nicht viele Dinge vorstellen, die fehlen.
Martin Fjordvald
@MartinFjordvald Es gibt einige Funktionen, die Nginx absichtlich nicht ausgewählt hat. Man kann nicht sagen, dass sie "fehlen", aber man kann nicht behaupten, dass Nginx alles kann, was Apache kann. Es ist ein Kompromiss und ich begrüße Nginx für die Entscheidungen, die sie getroffen haben.
Chris S
Nun, da mein ursprünglicher Kommentar HTTP / 1.1-Proxy jetzt unterstützt wird, werden Webdav- und SVN-Hosting nicht unterstützt. Wenn wir Probleme wie dynamisch verknüpfte Module nicht berücksichtigen, hat sich nginx entschieden, dies bisher nicht zu tun.
Martin Fjordvald
1

Zum Start viele Module und eine gigantisch installierte Basis. Aber es ist nicht genau das, was Apache zu bieten hat , sondern das, was Apache tut : Es funktioniert viel besser, um dynamische Inhalte wie PHP, Python, Perl, Java usw. bereitzustellen.

Natürlich können Sie das auch mit Nginx tun (aber meiner Meinung nach ist es ein wenig hackisch), aber die Lösungen sind auf Apache viel bewährter und ausgereifter als auf NginX, was wiederum viel besser ist als Apache, wenn es darum geht, hohe Lasten und eine hervorragende Leistung zu erbringen Rewriter / Reverse Proxy.

Für jeden Job das richtige Werkzeug!

Core-Dump
quelle
Vielleicht war dies vor 2008 der Fall, als ich nginx zum ersten Mal auf einem Produktionswebserver bereitstellte, aber das scheint jetzt nicht so zu sein. Ich würde gerne eine Erweiterung sehen, warum Sie glauben, dass Apaches Modell, die Interpreter in den Webserver aufzunehmen, besser ist.
Michael Hampton