Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie Beispiele für den Arbeitsmechanismus von Nginx und FPM

Teilen Sie Beispiele für den Arbeitsmechanismus von Nginx und FPM

小云云
小云云Original
2018-03-01 14:01:051310Durchsuche

Es gibt viele Artikel im Internet darüber, wie man Nginx + FPM konfiguriert, aber sie sind eher aus betrieblicher Sicht und erklären uns, wie es geht, aber nicht, warum wir es tun sollten Beziehung zwischen Nginx und FPM Ausgehend vom Arbeitsmechanismus diskutieren wir die Prinzipien hinter der Konfiguration, damit wir wirklich verstehen können, wie Nginx und PHP zusammenarbeiten.

Um darüber zu sprechen, wie Nginx und PHP zusammenarbeiten, müssen wir zunächst über die beiden Protokolle CGI (Common Gateway Interface) und FastCGI sprechen.

CGI ist ein Protokoll für die Interaktion zwischen Webserver und Hintergrundsprache. Mit diesem Protokoll können Entwickler jede Sprache verwenden, um Anfragen vom Webserver zu verarbeiten und Inhalte dynamisch zu generieren. CGI hat jedoch einen schwerwiegenden Nachteil: Jede Anfrage muss in einen neuen Prozess umgewandelt werden. Mit dem Aufkommen des Webs ist eine hohe Parallelität immer mehr zur Norm geworden, und diese ineffiziente Methode kann die Anforderungen offensichtlich nicht erfüllen. Auf diese Weise wurde FastCGI geboren und CGI zog sich bald von der Bühne der Geschichte zurück. FastCGI ist, wie der Name schon sagt, schnelleres CGI. Es ermöglicht die Verarbeitung mehrerer Anfragen in einem Prozess, anstatt den Prozess direkt nach der Verarbeitung einer Anfrage zu beenden.

FPM (FastCGI Process Manager) ist eine Implementierung von FastCGI und jeder Webserver, der das FastCGI-Protokoll implementiert, kann damit kommunizieren. FPM bietet auch einige Verbesserungen gegenüber Standard-FastCGI. Weitere Informationen finden Sie in der offiziellen Dokumentation: PHP: FPM-Installation.

FPM ist ein PHP-Prozessmanager, einschließlich Master-Prozess und Worker-Prozess: Es gibt nur einen Master-Prozess, der für das Abhören des Ports und den Empfang von Anforderungen vom Webserver verantwortlich ist, während es im Allgemeinen mehrere Worker-Prozesse gibt (Insbesondere Die Anzahl wird entsprechend den tatsächlichen Anforderungen konfiguriert.) In jedem Prozess ist ein PHP-Interpreter eingebettet, in dem der PHP-Code tatsächlich ausgeführt wird. Das Bild unten zeigt die Prozesssituation von fpm auf meinem lokalen Computer, 1 Master-Prozess 3 Arbeitsprozesse:


Vom FPM bis zum Empfang der Anfrage und deren Bearbeitung ist der spezifische Prozess wie folgt:

  1. FPMs Der Master-Prozess empfängt die Anfrage

  2. Der Master-Prozess weist entsprechend der Konfiguration einen bestimmten Worker-Prozess zur Bearbeitung der Anfrage zu. Wenn kein Prozess verfügbar ist, liegt ein Fehler vor Aus diesem Grund treten bei der Arbeit mit Nginx häufig 502-Fehler auf.

  3. Der Worker-Prozess verarbeitet die Anfrage. Bei einer Zeitüberschreitung wird ein 504-Fehler zurückgegeben.

  4. Die Anfrage wird verarbeitet ist abgeschlossen und das Ergebnis wird zurückgegeben

Dies ist der Prozess, bei dem FPM Anfragen empfängt und verarbeitet. Wie sendet Nginx also Anfragen an FPM? Dies muss auf Nginx-Ebene erklärt werden.

Wir wissen, dass Nginx nicht nur ein Webserver, sondern auch ein leistungsstarker Proxyserver ist. Neben der Weiterleitung von HTTP-Anfragen kann es auch viele andere Protokollanfragen weiterleiten, einschließlich des mit fpm verbundenen Fastcgi-Protokolls in diesem Artikel . . Damit Nginx das Fastcgi-Protokoll verstehen kann, stellt Nginx das Fastcgi-Modul zur Verfügung, um http-Anfragen den entsprechenden Fastcgi-Anfragen zuzuordnen.

Das fastcgi-Modul von Nginx stellt die Anweisung fastcgi_param bereit, um hauptsächlich diese Zuordnungsbeziehungen zu verarbeiten. Unten finden Sie eine Konfigurationsdatei von Nginx unter Ubuntu. Ihre Hauptaufgabe besteht darin, die Variablen in Nginx in Variablen zu übersetzen, die in PHP verstanden werden können .

Außerdem ist der Befehl fastcgi_pass sehr wichtig. Dieser Befehl wird verwendet, um die Adresse anzugeben, an der der FPM-Prozess alle PHP-Anfragen in Fastcgi-Anfragen übersetzt und sie dann an diese Adresse sendet. Hier ist eine einfache funktionierende Nginx-Konfigurationsdatei:

In dieser Konfigurationsdatei erstellen wir einen neuen virtuellen Host, der Port 80 überwacht, und das Web-Stammverzeichnis ist /home/rf/projects/wordpress. Dann verwenden wir die Location-Direktive, um alle Anfragen, die mit .php enden, zur Verarbeitung an das Fastcgi-Modul zu übergeben, wodurch alle PHP-Anfragen zur Verarbeitung an fpm übergeben werden, wodurch die geschlossene Schleife von Nginx zu fpm geschlossen wird.

Jetzt sollte der gesamte Kommunikationsprozess zwischen Nginx und FPM klarer sein.

Verwandte Empfehlungen:

Detaillierte Einführung in die Installation der PHP-Umgebung unter Linux und die Konfiguration von Nginx zur Unterstützung des PHP-FPM-Moduls (Bild und Text)

PHP – Detaillierte Erläuterung der Echtzeitanzeige und Überwachung des FPM-Betriebsstatus

php verwendet php-fpm, um den Betriebsbefehl neu zu starten und zu stoppen

Das obige ist der detaillierte Inhalt vonTeilen Sie Beispiele für den Arbeitsmechanismus von Nginx und FPM. 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