Diese Art von Frage wurde hier vielleicht gestellt, aber ich konnte keine finden, die wirklich zu meiner Frage passt. Ich habe gehört, dass die Leistung von Nginx ziemlich beeindruckend ist, aber Apache verfügt über mehr Dokumente und eine Community (lesen: Experte), um Hilfe zu erhalten
Jetzt möchte ich wissen, wie sich beide Webserver in Bezug auf Leistung, Einfachheit der Konfiguration, Anpassungsgrad usw. ALS REVERSE PROXY-Server in einer vps-Umgebung?
Ich wiege immer noch zwischen den beiden für eine Ruby-Web-App (nicht ROR), die mit Thin (einer von Ruby-Webservern) bedient wird.
Spezifische Antwort wird sehr geschätzt. Die allgemeine Antwort, den Rubin-Teil nicht zu berühren, ist in Ordnung. Ich bin immer noch kein Neuling in der Webserververwaltung.
Antworten:
Ich wollte dies in einen Kommentar einfügen, da ich mit dem wichtigsten Punkt der Antwort von webdestroyas einverstanden bin, aber es wurde ein bisschen zu lang.
Sie befinden sich in einer VPS-Umgebung. Dies bedeutet, dass Sie höchstwahrscheinlich wenig RAM haben. Schon aus diesem Grund sollten Sie Nginx verwenden, da sein Speicherbedarf geringer ist als der von Apaches.
Auch stimme ich einigen der genannten Argumente nicht zu.
Einfache Konfiguration:
Nginx ist nicht schwieriger als Apache. Es ist anders. Wenn Sie an Apache gewöhnt sind, werden Änderungen immer schwieriger. Dies bedeutet nicht, dass der Konfigurationsstil selbst schwieriger ist. Ich bin vor über einem Jahr vollständig von Apache auf Nginx umgestiegen, und heute habe ich Probleme, einen Apache-Server zu konfigurieren, während ich finde, dass Nginx extrem einfach zu konfigurieren ist.
Für Ruby:
Nginx hat Passenger, jedoch sehe ich es normalerweise als die schlechtere Methode an, um eine Verbindung zu Ruby herzustellen. Ich bin kein Ruby-Programmierer, daher kann ich das nicht überprüfen, aber ich sehe Unicorn und Thin oft als bessere Alternativen.
Fazit:
Nginx wurde als Reverse-Proxy eingerichtet. Zunächst wurden lediglich statische Dateien bereitgestellt und ein Reverse-Proxy über HTTP / 1.0 an einen Back-End-Server gesendet. Seitdem wurden FastCGI, Load Balancing und verschiedene andere Funktionen hinzugefügt. Der ursprüngliche Entwurfszweck bestand jedoch darin, statische Dateien und Reverse Proxy bereitzustellen. Und das macht es wirklich gut.
Apache ist im Gegenteil ein Allzweck-Webserver. Ich bezweifle nicht, dass es Proxy einwandfrei rückgängig machen kann, aber es wurde nicht für einen minimalen Speicherbedarf entwickelt und erfordert daher mehr Ressourcen als Nginx, was bedeutet, dass mein anfängliches VPS-Umgebungsargument ins Spiel kommt.
quelle
Leistung:
NGinX. Dieser Server ist als einer der leistungsstärksten Webserver bekannt und wird von vielen verschiedenen Unternehmen verwendet (Notable, MediaTemple).
Einfache Konfiguration:
Apache. Die Konfiguration von Apache ist sehr einfach und sehr leistungsfähig. Nginx ist mächtig, kann aber sehr schwer zu verstehen sein, da es eher einer Programmiersprache als einer Konfigurationsdatei ähnelt.
Anpassungsgrad:
Apache. Apache hat jede Menge Mods und andere Plugins dafür geschrieben. Nginx hat zwar noch Plugins dafür, aber ich denke, dass Apache viel, viel mehr hat als Nginx.
Für Ruby:
Ich weiß, dass Nginx mit Mongrel / webrick als leistungsstarker Load Balancer eingesetzt werden kann. Apache hat jedoch Phusion / Passenger, was die Integration schöner macht.
Reverse Proxy Gewinner:
NGinX
quelle
Nginx ist ereignisbasiert, während Apache prozessbasiert ist. Unter hoher Last macht dies den Unterschied in der Welt aus ... Apache muss für jede Verbindung einen neuen Thread forken oder starten, nginx dagegen nicht. Dieser Unterschied zeigt sich hauptsächlich in der Speichernutzung, aber auch in der Benutzerantwortzeit und anderen Leistungsmetriken. Nginx kann Zehntausende gleichzeitiger HTTP-Keepalive-Verbindungen auf moderner Hardware verarbeiten. Apache verwendet 1 bis 2 MB Stack für jede Verbindung. Wenn Sie also rechnen, können Sie nur ein paar Hundert oder vielleicht tausend Verbindungen gleichzeitig verarbeiten, ohne zu tauschen.
Wir verwenden Nginx vor Apache und IIS in unserer Umgebung als Lastausgleichs- und Caching-Proxy und können nicht zufriedener sein. Wir verwenden zwei kleine Nginx-Boxen anstelle eines Paares sehr teurer geleaster F5-Geräte, und unsere Standorte sind sowohl in Bezug auf die Haptik als auch auf die gemessenen Reaktionszeiten weitaus schneller.
quelle
Ich war vor ungefähr zwei Wochen in demselben Dilemma wie Sie.
Um Ihnen eine wirklich knappe Antwort zu geben: Meiner Recherche nach ist nginx sehr schnell und ressourcenschonend, wurde jedoch nur für das Umkehren von statischen Proxy-Dateien entwickelt. Der Rest sind aufgeschraubte Lösungen, die Sie konfigurieren oder nach Ihren Wünschen erstellen müssen.
AFAIK nginx hat keine htaccess-Dateien. Sie müssen sich also zurechtfinden, wenn Sie von dieser Funktion abhängig sind.
AFAIK hat alles funktioniert und ich habe Tutorials gesehen.
Ich werde mit Nginx mit meinem Test- und Profiling-Setup gehen. Ich habe eine typische LAMP-Anwendung.
Ich habe gelesen, dass es Leute gibt, die Proxy umkehren und statische Dateien von nginx bereitstellen und alles andere wie PHP an eine laufende Apache-Instanz übergeben. Sie behaupten einen guten Kompromiss. Ich habe keine Leistungsdaten darüber, aber Sie möchten vielleicht wissen.
quelle
Ich hatte in den letzten Jahren ernsthafte Probleme mit Apaches mod_proxy auf einer Vielzahl von Plattformen in verschiedenen Umgebungen. Von Zeit zu Zeit funktioniert es einfach nicht mehr und die einzige Möglichkeit scheint darin zu bestehen, den Apache-Server neu zu starten.
Persönlich würde ich nicht "nginx vs Apache" fragen, sondern "nginx vs lighttpd" - und das ist ein weitaus härterer Anruf!
quelle