Frage Nginx vs Apache als Reverse-Proxy, den man wählen


Diese Art von Frage wurde vielleicht hier gestellt aber ich konnte keine finden, die wirklich zu meiner Frage passen. Gehört, dass Nginx Leistung ist ziemlich beeindruckend, aber Apache hat mehr docs, community (lies: expert) um Hilfe zu bekommen

Nun, was ich wissen will, wie beide Webserver vergleichen in Bezug auf Leistung, Einfachheit der Konfiguration, Grad der Anpassung, etc. AS REVERSE PROXY Server in einer vps-Umgebung?

Ich wäge immer noch zwischen den beiden für eine Ruby Web App (nicht ROR) serviert mit dünn (einer von Ruby Webserver).
Spezifische Antwort wird sehr geschätzt. Allgemeine Antwort, die den Rubin Teil nicht berührt, ist okay. Ich bin immer noch Noob in der Webserver-Verwaltung.


31
2018-05-19 03:43


Ursprung


tnx zu martin und webdestroya antwortet, jetzt lehne ich mich an nginx - user22695
Wäre es nicht sinnvoller, mit einem speziell entwickelten Reverse-Proxy-Lack zu arbeiten? - ptman


Antworten:


Ich wollte dies in einen Kommentar schreiben, da ich dem wichtigsten Punkt der webdestroyas-Antwort zustimme, aber es ist ein bisschen zu lang geworden.

Sie befinden sich in einer VPS-Umgebung, das bedeutet, dass Sie wahrscheinlich wenig RAM haben. Aus diesem Grund werden Sie Nginx wollen, da sein Speicherbedarf kleiner ist als Apaches.

Auch ich stimme einigen der genannten Argumente nicht zu.

Einfachheit der Konfiguration:
Nginx ist nicht schwieriger als Apache. Es ist anders. Wenn Sie mit Apache vertraut sind, wird die Änderung immer schwieriger, das bedeutet nicht, dass der Konfigurations-Stil selbst schwieriger ist. Ich habe vor über einem Jahr vollständig von Apache zu Nginx migriert und heute würde ich mich schwer tun, einen Apache-Server zu konfigurieren, während ich finde, dass Nginx extrem einfach zu konfigurieren ist.

Für Ruby:
Nginx hat Passenger, aber ich sehe es normalerweise als die minderwertige Methode, um mit Ruby zu verbinden. Ich bin kein Ruby-Programmierer, also kann ich das nicht bestätigen, aber ich sehe Unicorn und Thin oft als bessere Alternativen.

Abschließend:
Nginx wurde zu einem Reverse Proxy gemacht. Zu Beginn wurden lediglich statische Dateien und Reverse-Proxy über HTTP / 1.0 an einen Backend-Server gesendet. Seither wurden fastcgi, Load Balancing und verschiedene andere Features hinzugefügt, aber der ursprüngliche Designzweck war die Bereitstellung von statischen Dateien und Reverse-Proxy. Und das tut es wirklich gut.

Apache ist im Gegenteil ein Allzweck-Webserver. Ich habe keinen Zweifel daran, dass es Proxy vollkommen einwandfrei umwandeln kann, aber es wurde nicht entworfen, um einen minimalen Speicherbedarf zu haben und als Ergebnis benötigt es mehr Ressourcen als Nginx, was bedeutet, dass mein anfängliches VPS-Umgebungsargument ins Spiel kommt.


29
2018-05-19 06:44



+1 für die Klärung. - John Gardeniers
Ich würde so weit gehen, es als Ihren einzigen Webserver zu empfehlen. Siehe meine Kommentare serverfault.com/questions/133481/ ... <- hier. Ich verwende es als einzigen Webserver auf meinem VPS, und ich habe die anderen Benutzer mit FastCGI für ihre PHP / CGI-Anwendungen an Bord gebracht. - Jason
Jason Ich benutze es seit über einem Jahr als meinen einzigen Webserver und es bewältigt täglich Millionen von Seitenaufträgen. Ich stimme Ihrer Empfehlung voll und ganz zu! :) - Martin Fjordvald


Performance:
NGinX. Dieser Server ist als einer der leistungsstärksten Webserver bekannt und wird von vielen verschiedenen Unternehmen verwendet (Notable, MediaTemple).

Einfachheit der Konfiguration:
Apache. Die Konfiguration von Apache ist wirklich einfach und sehr mächtig. Nginx ist leistungsfähig, kann aber sehr schwer zu verstehen sein, da es eher wie eine Programmiersprache als eine Konfigurationsdatei aussieht.

Anpassungsgrad:
Apache. Apache hat jede Menge Mods und andere Plugins dafür geschrieben. Während Nginx noch Plugins dafür hat, denke ich, dass Apache viel mehr als Nginx hat.

Für Ruby:
Ich weiß, dass Nginx als leistungsstarker Load Balancer mit Mongrel / Webrick verwendet werden kann. Apache hat jedoch Phusion / Passenger, was die Integration schöner macht.

Reverse-Proxy-Gewinner:
NGinX


7
2018-05-19 04:04



Ich bin interessiert, nicht streiten. Warum ist Nginx ein Gewinner für Reverse-Proxy? Der Rest deiner Antwort unterscheidet dich nicht wirklich von dem anderen. Wenn überhaupt, neigt es dazu, Apache zu bevorzugen. - John Gardeniers
Nun, weil Sie einen Reverse-Proxy wegen hoher Last wünschen. Was bedeutet, dass die Leistung wahrscheinlich das größte Problem ist, in welchem ​​Fall Nginx der Gewinner war, weshalb ich es gewählt habe. Als Entwickler liebe ich Apache, aber von einem "Wie kann ich die meiste Leistung von diesem Webserver erhalten" Punkt, würde ich mit Nginx gehen - Mitch Dempsey


Nginx ist ereignisbasiert, während Apache prozessbasiert ist. Unter hoher Last macht dies den ganzen Unterschied in der Welt ... Apache muss fork oder starten Sie einen neuen Thread für jede Verbindung, während Nginx nicht. Dieser Unterschied zeigt sich hauptsächlich in der Speichernutzung, aber auch in der Antwortzeit des Benutzers und anderen Leistungsmesswerten. Nginx kann Zehntausende verarbeiten gleichzeitig HTTP Keepalive-Verbindungen auf moderner Hardware. Apache verwendet für jede Verbindung einen Stack von 1-2 MB. Sie sehen also, dass Sie nur ein paar hundert oder vielleicht tausende Verbindungen gleichzeitig verarbeiten können, ohne mit dem Tausch zu beginnen.

Wir verwenden nginx vor Apache und IIS in unserer Umgebung als Load-Balancing- und Caching-Proxy und könnten nicht glücklicher sein. Wir verwenden zwei kleine nginx-Boxen anstelle eines Paares sehr teurer geleaster F5-Geräte, und unsere Standorte sind sowohl hinsichtlich der gefühlten als auch der gemessenen Antwortzeiten viel schneller.


5
2017-07-17 05:41





Ich war vor ungefähr zwei Wochen in demselben Dilemma wie du.

Um Ihnen eine wirklich knappe Antwort zu geben: Von meiner Forschung ist nginx wirklich schnell und ressourcenfreundlich, aber es war nur so konzipiert, statische Proxy-Dateien umzukehren. Der Rest sind verschraubte Lösungen, die Sie sich konfigurieren oder scripten müssen.

AFAIK nginx hat keine htaccess-Dateien, so dass Sie sich orientieren müssen, wenn Sie von dieser Funktion abhängig sind.

AFAIK alles funktioniert funktioniert und ich habe Tutorials gesehen.

Ich werde mit nginx mit meiner Test- und Profilerstellung gehen. Ich habe eine typische LAMP-Anwendung.

Ich habe gelesen, dass es Leute gibt, die Proxy umstellen 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.


1
2018-05-19 07:55



Die Deaktivierung von htaccess-Überschreibungen auf Apache aus Performance-Gründen ist ziemlich üblich, die Unterstützung einer solchen Funktion in einem Server, der für hohe Leistung ausgelegt ist, wäre wenig sinnvoll. - theotherreceive
Danke, dass du diese Aussage hinzugefügt hast. Das OP ist kein Pro-Admin, also müssen wir klar sein. - deploymonkey


Ich hatte in den letzten Jahren große Probleme mit Apache mod_proxy auf einer Vielzahl von Plattformen in verschiedenen Umgebungen. Von Zeit zu Zeit hört es einfach auf zu arbeiten und das einzige Heilmittel scheint zu sein, den Apache Server neu zu starten.

Persönlich würde ich nicht "nginx vs Apache", aber "nginx vs lighttpd" fragen - und das ist ein weitaus härterer Anruf!


1
2018-05-19 08:00



Gültiges Argument, aber das letzte Mal, als ich nachgesehen habe, hatte lighttpd immer noch lange ausstehende Fehler und war für Speicherlecks bekannt. Es wurde davon abgeraten, dass die Produktion von Admins bereitgestellt wird. Hat sich das geändert? - deploymonkey
Es hat Vorbehalte, sicherlich (vor allem wenn sehr große Dateien), aber es ist deutlich stabiler als Apache als Proxy - ich hatte in den letzten sechs Monaten keine wirklichen Probleme in mehreren Bereitstellungen - Mo.
Ich habe Lighttpd von der Kandidatenliste aus irgendeinem vergessenen Grund abgeschrieben :) - user22695