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-Modusblockiert 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):
Client Es muss ein Forward-Proxy-Server eingerichtet sein
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):
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:
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.
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.
Der von Nginx unterstützte Lastausgleichsplanungsalgorithmus lautet wie folgt:
- 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.
- 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.
- 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.
- 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Sie können den Namen des Docker -Containers abfragen, indem Sie den Schritten folgen: Alle Container auflisten (Docker PS). Filtern Sie die Containerliste (unter Verwendung des GREP -Befehls). Ruft den Containernamen ab (befindet sich in der Spalte "Namen").

So konfigurieren Sie einen Nginx -Domänennamen auf einem Cloud -Server: Erstellen Sie einen Datensatz, der auf die öffentliche IP -Adresse des Cloud -Servers zeigt. Fügen Sie virtuelle Hostblöcke in die NGINX -Konfigurationsdatei hinzu, wobei der Hörport, Domänenname und das Root -Verzeichnis der Website angegeben werden. Starten Sie Nginx neu, um die Änderungen anzuwenden. Greifen Sie auf die Konfiguration des Domänennamens zu. Weitere Hinweise: Installieren Sie das SSL -Zertifikat, um HTTPS zu aktivieren, sicherzustellen, dass die Firewall den Verkehr von Port 80 ermöglicht, und warten Sie, bis die DNS -Auflösung wirksam wird.

Die Methoden, die die Nginx -Version abfragen können, sind: Verwenden Sie den Befehl nginx -v; Zeigen Sie die Versionsrichtlinie in der Datei nginx.conf an. Öffnen Sie die Nginx -Fehlerseite und sehen Sie sich den Seitentitel an.

Wie konfiguriere ich Nginx in Windows? Installieren Sie NGINX und erstellen Sie eine virtuelle Hostkonfiguration. Ändern Sie die Hauptkonfigurationsdatei und geben Sie die Konfiguration der virtuellen Host ein. Starten oder laden Nginx neu. Testen Sie die Konfiguration und sehen Sie sich die Website an. Aktivieren Sie selektiv SSL und konfigurieren Sie SSL -Zertifikate. Stellen Sie die Firewall selektiv fest, damit Port 80 und 443 Verkehr.

Das Starten eines Nginx-Servers erfordert unterschiedliche Schritte gemäß verschiedenen Betriebssystemen: Linux/UNIX-System: Installieren Sie das NGINX-Paket (z. B. mit APT-Get oder Yum). Verwenden Sie SystemCTL, um einen Nginx -Dienst zu starten (z. B. sudo systemctl start nginx). Windows -System: Laden Sie Windows -Binärdateien herunter und installieren Sie sie. Starten Sie Nginx mit der ausführbaren Datei nginx.exe (z. B. nginx.exe -c conf \ nginx.conf). Unabhängig davon, welches Betriebssystem Sie verwenden, können Sie auf die Server -IP zugreifen

Erstellen Sie einen Container in Docker: 1. Ziehen Sie das Bild: Docker Pull [Spiegelname] 2. Erstellen Sie einen Container: Docker Ausführen [Optionen] [Spiegelname] [Befehl] 3. Starten Sie den Container: Docker Start [Containername]

So bestätigen Sie, ob Nginx gestartet wird: 1. Verwenden Sie die Befehlszeile: SystemCTL Status Nginx (Linux/Unix), Netstat -ano | FindStr 80 (Windows); 2. Überprüfen Sie, ob Port 80 geöffnet ist; 3. Überprüfen Sie die Nginx -Startmeldung im Systemprotokoll. 4. Verwenden Sie Tools von Drittanbietern wie Nagios, Zabbix und Icinga.

Startschritte des Docker -Containers: Ziehen Sie das Containerbild: Führen Sie "Docker Pull [Mirror Name]" aus. Erstellen eines Containers: Verwenden Sie "Docker erstellen [Optionen] [Spiegelname] [Befehle und Parameter]". Starten Sie den Container: Führen Sie "Docker Start [Container Name oder ID]" aus. Containerstatus überprüfen: Stellen Sie sicher, dass der Container mit "Docker PS" ausgeführt wird.
