Heim >Backend-Entwicklung >PHP-Tutorial >Einführung in Nginx

Einführung in Nginx

WBOY
WBOYOriginal
2016-08-08 09:21:231140Durchsuche

Nginx ( ausgesprochen als „engine x) ist eine Software, die von entwickelt wurde Russland Software-IngenieurIgor Ein Open-Source-Web-Server, geschrieben von Sysoev. Seit seiner Veröffentlichung im Jahr 2004nginx konzentriert sich auf die Verwendung von hoher Leistung, hoher Parallelität und geringem Speicher. Darüber hinaus Es gibt einige spezielle Web Serverfunktionen, wie z. B. Lastausgleich, Caching, Zugriffs- und Bandbreitenkontrolle sowie die Möglichkeit, sich effektiv in verschiedene Anwendungen zu integrieren. Diese Funktionen machen nginx ist zu einer guten Wahl in der modernen Website-Architektur geworden. Derzeit belegt nginx den zweiten Platz auf der Liste der beliebtesten Web-Serversoftware im Internet.

1.

Warum ist eine hohe Parallelität so wichtig? Das Internet ist heutzutage so beliebt und allgegenwärtig, und wir wissen, dass dies vor

10 Jahren kaum vorstellbar war. Darüber hinaus generiert das einfache HTML anklickbaren Text für Apache basierend auf Die große Entwicklung der Web-Dienste hat das Internet zu einem gemeinsamen Kommunikationsmedium für 2 Milliarden Internetnutzer auf der ganzen Welt gemacht. Die immer weiter zunehmende Verbreitung von Computern, mobilen Geräten und neuerdings auch Tablets hat zu einem sehr schnellen Wandel im Internetbereich und einer kabelgebundenen Digitalisierung der gesamten Wirtschaft geführt. Auch Online-Dienste sind mit Echtzeit- und effektiven Lebens- und Unterhaltungsinformationen detaillierter geworden. Und auch bei den Sicherheitsaspekten des Online-Geschäfts hat es erhebliche Veränderungen gegeben. Infolgedessen sind Websites komplexer geworden als zuvor und erfordern mehr technische Arbeit, um das Internet robuster und skalierbarer zu machen. Die größte Herausforderung für eine Website-Architektur ist die Parallelität. Seit Beginn des Netzwerks-Dienstes ist der Grad der Parallelität weiter gestiegen. Es ist nicht ungewöhnlich, dass eine Website Hunderte, Tausende oder sogar Millionen von Benutzern gleichzeitig bedient. Vor zehn Jahren war die Ursache für Parallelität ein langsamer Client – damals verwendeten Benutzer

ADSL oder DFÜ, um eine Verbindung herzustellen; Heutzutage,Parallelität ist eine Kombination aus mobilen Clients und einigen neueren Anwendungsarchitekturen, die dauerhafte Verbindungen erfordern, um Nachrichten, Tweets, Nachrichten von Freunden usw. zu aktualisieren. Ein weiterer Faktor, der zu einer erhöhten Parallelität führt, besteht darin, dass moderne Browser 4 bis 6 Verbindungen für eine Website gleichzeitig öffnen, um das Web zu laden Seite. Verbessern Sie die Ladegeschwindigkeit der Seite. Um das Problem zu veranschaulichen, wenn der Client langsam ist, gehen wir davon aus, dass es ein einfaches WebApache basiert Der 🎜>-Dienst kann einen Antworttext oder ein Bild mit einer Größe von

100.000

generieren. Dann benötigt dieser Dienst nur einen Bruchteil einer Sekunde, um diese Seite zu generieren oder abzufragen, aber in einem Client mit 80kbps (10kB/s) Bandbreite dauert es 10 Sekunden, um diese Anfrage zu senden; ursprünglich Der Web-Dienst kann schnell 100.000 Inhalte abrufen, kostet aber 10 Diese Verbindung kann erst nach 100.000 Inhalte wurden innerhalb von Sekunden übertragen. Nun gehen wir davon aus, dass 1000 Clients gleichzeitig verbunden sind, um ähnliche Inhalte anzufordern, wenn einem Client 1 Mio. zusätzlich zugeordnet ist Speicher, um dann die Anforderung von 1000Client 100K zu erfüllen, 1000M(Etwa 1G) zusätzlicher Speicher. Tatsächlich weist ein standardmäßiger Web-Dienst, der auf Apache basiert, normalerweise mehr als 1M zu Speicher, und leider beträgt die effektive Geschwindigkeit der mobilen Kommunikation nur mehrere zehn kpbs. Obwohl das Problem des Sendens von Inhalten an langsamere Clients durch die Socket-Pufferung des Betriebssystemkernels bis zu einem gewissen Grad gemildert werden kann, handelt es sich hierbei nicht um eine universelle Lösung und kann unvorhersehbare Folgen haben. negative Auswirkungen. Parallelitätsprobleme treten bei der Handhabung dauerhafter Verbindungen stärker in den Vordergrund, da eine erneute Erstellung von http-Verzögerungen vermieden werden muss Der Client muss immer eine Verbindung mit dem Web-Server aufrechterhalten und der Web

-Dienst weist außerdem zusätzlichen Speicherplatz für jede Verbindung zu.

Daher muss eine Website auf einer Reihe von sehr leistungsstarken Modulen aufgebaut sein, um die steigende Belastung durch die zunehmende Anzahl an Nutzern nachhaltig bewältigen zu können und eine höhere Parallelität zu erreichen. Andere Teile wie Hardware(CPU,Speicher,Festplatte), Netzwerkkapazität, Anwendungs- und Datenspeicherarchitektur sind offensichtlich gleichermaßen wichtig für die Bestimmung der Anzahl der Clientverbindungen, die ein Webserver akzeptieren und verarbeiten kann. Daher muss der Web-Server in der Lage sein, der wachsenden Anzahl gleichzeitiger Verbindungen und Anfragen pro Sekunde durch nichtlineare Skalierung gerecht zu werden. Ist Apache

geeignet?

Apache

, entstanden in den frühen 1990er Jahren, ist immer noch die dominierende

WebServersoftware. Ab dem Jahr 2000 wurde deutlich, dass eigenständige Webdienste nicht einfach repliziert werden konnten, um der wachsenden Zahl von Netzwerkdiensten gerecht zu werden. Obwohl Apache eine solide Grundlage für zukünftige Entwicklungen bietet, kann seine Architektur, bei der für jede neue Verbindung eine Kopie von sich selbst erstellt wird, die Anforderungen der nichtlinearen Erweiterung einer Website nicht erfüllen. Letztendlich wurde Apache zu einem voll funktionsfähigen Webserver mit einer Reihe von Plug-Ins von Drittanbietern und war nahezu universell für jede Art von sekundärer Entwicklungswebsite einsetzbar. Aber es nützt Ihnen nichts, so schwer zu sein, und der Nachteil ist, dass die Kombination so vieler Funktionen und Tools in einer Software auch die Kosten für jede Verbindung erhöht. CPU- und Speicherauslastung verringern somit die Skalierbarkeit der Software. Da Serverhardware, Betriebssystem und Netzwerkressourcen nicht mehr die Hauptfaktoren sind, die das Wachstum von Websites begrenzen, haben Entwickler auf der ganzen Welt auch damit begonnen, nach effektiveren Möglichkeiten für die Ausführung zu suchen Webdienste

Gerät.

Vor etwa zehn Jahren Daniel, ein berühmter Softwareentwickler Kegel behauptete, dass „es an der Zeit ist, dass Webserver nur noch Zehntausende gleichzeitiger Anfragen haben“ und sagte auch voraus, was wir heute Internet-Cloud-Dienste nennen. Kegels C10K-Liste enthielt auch einige Versuche, das Problem der Anzahl gleichzeitiger Verbindungen unter den besten Bedingungen des Webservers zu lösen, und bewies letztendlich, dass Nginx die effektivste Lösung ist.

Um das Problem von 10.000 gleichzeitigen Verbindungen auf der C10K-Liste zu lösen, erwägt Nginx eine andere Architektur – eine Architektur, die sowohl für die nichtlineare Erweiterung als auch für die Anzahl besser geeignet ist gleichzeitige Verbindungen und die Anzahl der Anfragen pro Sekunde. Da Nginx auf einem Ereignismodell basiert, folgt es nicht den Apache-Regeln, jeden neuen Prozess zu duplizieren oder für jede Seite einen separaten Thread zu erstellen. Dadurch bleiben Speicher- und CPU-Nutzung auch bei steigender Auslastung kontrollierbar, sodass Nginx Zehntausende gleichzeitiger Anfragen auf einem einzigen Server mit normaler Hardware verarbeiten kann.

nginx Die erste Version wird veröffentlicht, um statische Inhalte zu deinstallieren, die unter Apache auf Apache-basierten Anwendungsservern bereitgestellt werden, wie z. B. HTML, CSS, Javascript-Skripte und Bilder, die über Nginx Concurrency deinstalliert werden können und Timeout-Behandlung. Während seiner Entwicklung hat nginx mithilfe der Protokolle FastCGI, uswgi oder SCGI Anwendungen von Drittanbietern integriert und verfügt über verteilte Objekt-Caching-Systeme wie Memcache. Gleichzeitig wurden einige nützliche Funktionen hinzugefügt, wie z. B. Reverse-Proxy mit Lastausgleichsmechanismus und Caching. Diese zusätzlichen Funktionen machen Nginx zu einer effektiven Kombination von Tools zum Aufbau einer skalierbaren webbasierten Infrastruktur.

Gibt es weitere Vorteile bei der Verwendung von Nginx?

Normalerweise ist die effiziente und leistungsstarke Verarbeitung großer gleichzeitiger Anfragen der Hauptvorteil von Nginx. Gleichzeitig bietet die Verwendung von Nginx einige weitere Vorteile.

In den letzten Jahren haben Netzwerkarchitekten die Idee der losen Kopplung aufgegriffen und begonnen, die zugrunde liegenden Komponenten von Anwendungen von Webdiensten zu trennen. Bisher existierende Websites, die auf LAMP (Linux, Apache, MYSQL, PHP, Python oder Perl) basieren, können jedoch mittlerweile Websites enthalten, die nicht nur auf LEMP (E ausgesprochen „Engine x“) basieren, sondern werden in der Praxis immer häufiger eingesetzt müssen an den Rand der Infrastruktur verlagert werden oder einige neue Anwendungen und Datentools müssen auf unterschiedliche Weise integriert werden.

Für die obige Situation ist Nginx sehr gut geeignet. Dies liegt daran, dass Nginx Dienste von der Anwendungsschicht bis zum effizienteren Edge-Server bereitstellt (Anmerkung des Übersetzers: Unbekannte Leser können den Edge-Server abfragen). Es bietet einige wichtige Funktionen wie ausgelagerte Parallelität, Timeout-Behandlung, SSL (Secure Socket Layer), Inhaltsstatik, Komprimierung und Caching, Verbindungsnummer und Anforderungsdrosselung und sogar HTTP-Streaming. Gleichzeitig kann Nginx auch direkt in Memcached, Redis und andere NoSQL-Lösungen integriert werden, um die Leistung bei großen gleichzeitigen Benutzern zu verbessern.

Mit der Beliebtheit der neuesten offenen Toolkomponenten und Programmiersprachen beginnen immer mehr Unternehmen, ihre Gewohnheiten bei der Entwicklung und Bereitstellung von Anwendungen zu ändern. Und Nginx ist zu einem Vorbild für diese Art von Veränderung geworden und hat sich zu einer der wichtigsten Komponenten entwickelt. Gleichzeitig hat es vielen Unternehmen geholfen, nachhaltige und schnelle Webdienste innerhalb des Budgets zu entwickeln.

Die erste Codezeile für Nginx wurde 2002 geschrieben und 2004 wurde Nginx unter der 2-Zwei-Klausel-BSD-Lizenz veröffentlicht. Seit der Veröffentlichung von nginx ist seine Benutzerbasis weiter gewachsen und hat der gesamten Community durch das Einbringen von Ideen, das Einreichen von Fehlern sowie das Einbringen verschiedener Kommentare und Vorschläge eine große Hilfe geleistet.

Die Codebasis von nginx ist original und vollständig in der C-Sprache implementiert. Es wurde auch auf Betriebssysteme verschiedener Architekturen portiert, beispielsweise auf Linux-, FreeBSD-, Solaris-, Mac OS X-, AIX- und Windows-Systeme. nginx verfügt auch über eigene Bibliotheken, und diese Bibliotheken verwenden keine C-Bibliotheken, die nicht im System vorhanden sind. Daher können Benutzer zusätzlich zu zlib, PCRE und OpenSSL Bibliotheken entfernen, die sie nicht benötigen oder möglicherweise Lizenzkonflikte haben.

Lassen Sie uns ein wenig über die Windows-Version von Nginx sprechen. Nginx, das unter Windows läuft, ist eher ein Proof of Concept als ein voll funktionsfähiger Port. Nginx weist auch unter Windows Einschränkungen auf, das heißt, Nginx ist nicht gut mit dem Windows-Kernel kompatibel. Zu den bekannten Problemen niedrigerer Versionen von Nginx in Windows gehören weniger gleichzeitige Unterstützung, geringe Leistung, Cache-Fehler und Fehler bei der Bandbreitenrichtlinie. In Zukunft wird die Windows-Version von Nginx konsistenter mit den Mainstream-Funktionen sein.

Das Obige ist eine Einführung in Nginx, einschließlich verschiedener Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn