Was Nginx kann

步履不停
步履不停Original
2019-06-20 15:33:013250Durchsuche

Was Nginx kann

Die Entstehung von Nginx

Haben Sie noch nie von Nginx gehört? Dann haben Sie sicher schon von seinem „Peer“ Apache gehört! Nginx ist wie Apache ein WEB-Server. Basierend auf dem REST-Architekturstil werden mithilfe des Uniform Resources Identifier URI oder der Uniform Resources Locator URL als Basis für die Kommunikation verschiedene Netzwerkdienste über das HTTP-Protokoll bereitgestellt.

Allerdings waren diese Server durch die Umgebung zum Zeitpunkt ihrer ursprünglichen Entwicklung eingeschränkt, wie z. B. Benutzerumfang, Netzwerkbandbreite, Produktfunktionen und andere Einschränkungen zu diesem Zeitpunkt, und ihre jeweilige Positionierung und Entwicklung war unterschiedlich . Dies führt auch dazu, dass jeder WEB-Server seine eigenen charakteristischen Merkmale aufweist.

Apache hat eine lange Entwicklungszeit und ist der unangefochtene Server Nummer eins weltweit. Es hat viele Vorteile: stabil, Open Source, plattformübergreifend usw. Es gibt sie schon zu lange, als sie entstand, war sie weitaus unterlegener als heute. Es ist also als Schwergewicht konzipiert. Es unterstützt keine Server mit hoher Parallelität. Zehntausende gleichzeitige Zugriffe auf Apache führen dazu, dass der Server viel Speicher verbraucht. Auch der Wechsel des Betriebssystems zwischen Prozessen oder Threads verbraucht große Mengen an CPU-Ressourcen, was zu einer Verringerung der durchschnittlichen Antwortgeschwindigkeit von HTTP-Anfragen führt.

Dies alles bestimmt, dass Apache kein Hochleistungs-WEB-Server werden kann, und der leichte Server mit hoher Parallelität, Nginx, entstand.

Der russische Ingenieur Igor Sysoev entwickelte Nginx mit der Sprache C, während er für Rambler Media arbeitete. Als WEB-Server hat Nginx Rambler Media stets hervorragende und stabile Dienste bereitgestellt.

Dann hat Igor Sysoev den Nginx-Code als Open Source bereitgestellt und ihm eine freie Softwarelizenz erteilt.

Weil:

  • Nginx verwendet eine ereignisgesteuerte Architektur, die es ihm ermöglicht, Millionen von TCP-Verbindungen zu unterstützen
  • Hochmodulare und kostenlose Softwarelizenzzertifikate ermöglichen Dritt- Party-Module tauchen in einem endlosen Strom auf (dies ist eine Ära von Open Source~)
  • Nginx ist ein plattformübergreifender Server, der unter Linux, Windows, FreeBSD, Solaris, AIX, Mac OS und anderen Betriebssystemen ausgeführt werden kann Systeme
  • Diese hervorragenden Designs bringen große Stabilität

Nginx ist also beliebt!

Wo Nginx ins Spiel kommt

Nginx ist ein kostenloser, leistungsstarker Open-Source-HTTP-Server und Reverse-Proxy-Server; es ist auch ein IMAP-, POP3- und SMTP-Proxy-Server kann als HTTP-Server zum Veröffentlichen der Website verwendet werden, und Nginx kann als Reverse-Proxy zum Implementieren des Lastausgleichs verwendet werden.

Über Agenten

Apropos Agenten: Zunächst müssen wir ein Konzept klären. Der sogenannte Agent ist ein Vertreter und ein Kanal. Es sind zwei Rollen beteiligt, eine ist die Agentenrolle und die andere ist die Zielrolle. Der Prozess, bei dem der Agentencharakter auf die Zielrolle zugreift, um über diesen Agenten einige Aufgaben zu erledigen, wird wie bei einem Fachgeschäft als Agentenbetriebsprozess bezeichnet Im Leben ging ein Kunde in ein Adidas-Fachgeschäft und kaufte ein Paar Schuhe. Dieses Fachgeschäft ist ein Agent, die Agentenrolle ist der adidas-Hersteller und die Zielrolle ist der Benutzer.

Forward-Proxy

Bevor wir über Reverse-Proxy sprechen, werfen wir einen Blick auf Forward-Proxy, das auch das häufigste Proxy-Modell ist, mit dem jeder in Kontakt kommt Zwei Aspekte: Lassen Sie uns über das Verarbeitungsmodell des Forward-Proxys sprechen. Lassen Sie uns erklären, was Forward-Proxy aus Sicht der Software und des Lebens ist.

Wenn wir in der heutigen Netzwerkumgebung aus technischen Gründen auf bestimmte ausländische Websites zugreifen müssen, können wir derzeit nicht über einen Browser auf bestimmte ausländische Websites zugreifen Die Hauptmethode von FQ besteht darin, einen Proxyserver zu finden, der auf fremde Websites zugreifen kann. Der Proxyserver greift dann auf die fremde Website zu und leitet die abgerufenen Daten an uns weiter.

Der obige Proxy-Modus wird als Forward-Proxy bezeichnet.

Das größte Merkmal des Forward-Proxys ist, dass der Client genau weiß, auf welche Serveradresse er zugreifen möchte Die Anfrage kommt von und es ist unklar, von welchem ​​spezifischen Client sie stammt. Der Forward-Proxy-Modus

blockiert oder verbirgt die tatsächlichen Clientinformationen. Sehen wir uns ein schematisches Diagramm an (ich habe den Client und den Forward-Proxy zusammengefügt, sie gehören zur gleichen Umgebung, ich werde sie später vorstellen):

Was Nginx kannClient Es muss ein Forward-Proxy-Server eingerichtet sein

Voraussetzung ist natürlich, dass man die IP-Adresse des Forward-Proxy-Servers und den Port des Proxy-Programms kennt. Wie im Bild gezeigt.

Zusammengefasst: Forward-Proxy, „Er fungiert als Proxy für den Client und stellt Anfragen im Namen des Clients“, ist ein Proxy, der sich befindet zwischen dem Client und einem Server zwischen Ursprungsservern Um Inhalte vom Ursprungsserver zu erhalten, sendet der Client eine Anfrage an den Proxy und gibt das Ziel (Ursprungsserver) an. Der Proxy leitet die Anfrage dann an den Ursprungsserver weiter erhaltene Inhalte an den Kunden weiterzugeben. Der Client muss einige spezielle Einstellungen vornehmen, um den Forward-Proxy nutzen zu können.

Verwendungen von Forward-Proxys:
(1) Zugriff auf Ressourcen, auf die ursprünglich nicht zugegriffen werden konnte, z. B. Google
(2) Caching kann durchgeführt werden, um den Zugriff auf Ressourcen zu beschleunigen
(3) Client Zugriff autorisieren, zur Authentifizierung online gehen
(4) Der Proxy kann Benutzerzugriffsdatensätze aufzeichnen (Online-Verhaltensverwaltung) und Benutzerinformationen von außen verbergen

Reverse-Proxy

Verstehen Sie, was eine Weiterleitung ist Proxy ist, wir schauen uns weiterhin die Verarbeitungsmethoden von Reverse-Proxy an. Beispielsweise ist die Anzahl der Besucher, die jeden Tag zur gleichen Zeit mit der Website verbunden sind, bei weitem nicht explodiert In der Lage, den wachsenden Kaufwunsch der Menschen zu erfüllen, wird ein bekannter Begriff verwendet: die Bereitstellung mehrerer Server, um das Problem der Begrenzung der Anzahl der Besucher einer bestimmten Website zu lösen Wird auch direkt mit Nginx als Reverse-Proxy und durch Kapselung von Nginx und anderen implementiert. Die Komponente erhielt später einen ausgefallenen Namen: Tengine. Interessierte Kinder können die offizielle Website von Tengine besuchen, um spezifische Informationen anzuzeigen: http://tengine.taobao.org/. Wie implementiert der Reverse-Proxy also verteilte Cluster-Operationen? Schauen wir uns zunächst ein schematisches Diagramm an (ich stelle den Server und den Reverse-Proxy zusammen, beide gehören zur gleichen Umgebung, ich werde sie später vorstellen):

Was Nginx kann

Wie Sie dem obigen Diagramm deutlich entnehmen können, verteilt der Nginx-Server die von mehreren Clients an den Server gesendeten Anforderungen gemäß bestimmten Regeln an den Verarbeitungsserver Es. Zu diesem Zeitpunkt ist die Quelle der Anfrage, also der Client, klar, aber es ist nicht klar, welcher Server die Anfrage verarbeitet. Nginx spielt die Rolle eines Reverse-Proxys.

Der Client ist sich der Existenz des Proxys nicht bewusst. Der Reverse-Proxy ist für die Außenwelt transparent. Weil der Client für den Zugriff keine Konfiguration benötigt.

Reverse-Proxy, „Er fungiert als Proxy für den Server und empfängt Anfragen im Namen des Servers“, ist Wird hauptsächlich für Server verwendet. Im Falle einer verteilten Clusterbereitstellung verbirgt Reverse Proxy Serverinformationen.

Die Rolle des Reverse-Proxys:
(1) Um die Sicherheit des Intranets zu gewährleisten, wird der Reverse-Proxy normalerweise als öffentliche Netzwerkzugriffsadresse verwendet, und der Webserver ist das Intranet
(2) Lastausgleich, optimieren Sie die Auslastung der Website über den Reverse-Proxy-Server

Projektszenario

Normalerweise sind Forward-Proxy und Reverse-Proxy wahrscheinlich, wenn wir das eigentliche Projekt betreiben In einem Anwendungsszenario fordert der Forward-Proxy-Client den Zugriff auf den Zielserver an, der umgekehrt mehrere echte Geschäftsverarbeitungsserver bedient. Das spezifische Topologiediagramm lautet wie folgt:

Was Nginx kann

Der Unterschied zwischen den beiden

Ich habe einen Screenshot gemacht, um den Unterschied zwischen Forward-Proxy und Reverse-Proxy zu veranschaulichen. wie in der Abbildung gezeigt.

Was Nginx kann

Abbildung:

Im Forward-Proxy gehören der Proxy und der Client zum selben LAN (in der Box im Bild) und der Client Informationen werden ausgeblendet;

Im Reverse-Proxy gehören Proxy und Server zum selben LAN (im Feld im Bild), wodurch die Serverinformationen ausgeblendet werden

Tatsächlich macht Proxy dasselbe In beiden Proxys werden Anfragen und Antworten im Namen des Servers gesendet und empfangen. Aus struktureller Sicht sind jedoch die linke und die rechte Seite vertauscht, sodass die später erscheinende Proxy-Methode als Reverse-Proxy bezeichnet wird.

Lastausgleich

Wir haben das Konzept des sogenannten Proxyservers geklärt. Als nächstes spielt Nginx die Rolle eines Reverse-Proxyservers und welche Regeln es für die Verteilung von Anforderungen verwendet ? Können die Verteilungsregeln für verschiedene Projektanwendungsszenarien gesteuert werden?

Die Anzahl der vom Client gesendeten und vom hier erwähnten Nginx-Reverse-Proxy-Server empfangenen Anforderungen wird als Auslastung bezeichnet.

Die Regel, dass die Anzahl der Anfragen nach bestimmten Regeln auf verschiedene Server zur Verarbeitung verteilt wird, ist eine Ausgleichsregel.

Der Prozess der Verteilung der vom Server empfangenen Anforderungen gemäß den Regeln wird als Lastausgleich bezeichnet.

Im eigentlichen Projektbetrieb gibt es zwei Arten des Lastausgleichs: Hardware-Lastausgleich und Software-Lastausgleich. Der Hardware-Lastausgleich wird auch als harte Last bezeichnet, z. B. der F5-Lastausgleich, der relativ teuer und kostspielig ist, die Daten jedoch Es gibt eine sehr gute Garantie für Leistung usw. Nur Unternehmen wie China Mobile und China Unicom werden sich aus Kostengründen für den Software-Lastausgleich entscheiden. Ein Mechanismus zur Verteilung der Nachrichtenwarteschlange, der in Kombination mit der Host-Hardware implementiert wird.

Was Nginx kann

Der von Nginx unterstützte Lastausgleichsplanungsalgorithmus lautet wie folgt:

  1. Gewichtungsabfrage (Standard, häufig verwendet): Empfangene Anfragen werden entsprechend verteilt Um Gewicht auf verschiedene Backend-Server zu legen, entfernt Nginx den Server automatisch aus der Warteschlange, selbst wenn ein bestimmter Backend-Server während der Verwendung ausfällt, und die Anforderungsannahme wird in keiner Weise beeinträchtigt. Auf diese Weise kann ein Gewichtungswert (Gewicht) für verschiedene Back-End-Server festgelegt werden, um die Zuordnungsrate der Anforderungen auf verschiedenen Servern anzupassen Es wird hauptsächlich an unterschiedliche Back-End-Server-Hardwarekonfigurationen in tatsächlichen Arbeitsumgebungen angepasst.
  2. ip_hash (häufig verwendet): Jede Anfrage wird anhand des Hash-Ergebnisses der IP des initiierenden Clients abgeglichen. Bei diesem Algorithmus greift ein Client mit einer festen IP-Adresse immer auf denselben Back-End-Server zu In gewissem Maße löst es auch das Problem der Sitzungsfreigabe in einer Cluster-Bereitstellungsumgebung.
  3. fair: Intelligente Anpassung des Planungsalgorithmus, dynamische und ausgewogene Zuordnung basierend auf der Zeit von der Anforderungsverarbeitung bis zur Antwort des Back-End-Servers. Server mit kurzen Antwortzeiten und hoher Verarbeitungseffizienz haben eine hohe Wahrscheinlichkeit Es wird ein Planungsalgorithmus zugewiesen, der die Vorteile der ersten beiden kombiniert. Es ist jedoch zu beachten, dass Nginx den Fair-Algorithmus standardmäßig nicht unterstützt. Wenn Sie diesen Planungsalgorithmus verwenden möchten, installieren Sie bitte das Modul upstream_fair.
  4. url_hash: Verteilen Sie Anfragen entsprechend dem Hash-Ergebnis der aufgerufenen URL. Die URL jeder Anfrage verweist auf einen festen Server im Backend, was die Caching-Effizienz verbessern kann, wenn Nginx als statischer Server verwendet wird. Es ist auch zu beachten, dass Nginx diesen Planungsalgorithmus standardmäßig nicht unterstützt. Wenn Sie ihn verwenden möchten, müssen Sie das Nginx-Hash-Softwarepaket installieren.

Vergleich mehrerer häufig verwendeter Webserver

对比项服务器 Apache Nginx Lighttpd
Proxy代理 非常好 非常好 一般
Rewriter 非常好 一般
Fcgi 不好 非常好
热部署 不支持 支持 不支持
系统压力 很大 很小 比较小
稳定性 非常好 不好
安全性 一般 一般
静态文件处理 一般 非常好
反向代理 一般 非常好 一般

Weitere technische Artikel zu Nginx finden Sie unter Nginx-Tutorial Spalte zum Lernen!

Das obige ist der detaillierte Inhalt vonWas Nginx kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

In Verbindung stehende Artikel

Mehr sehen