Der Funktionsmechanismus und die Prinzipien zwischen PHP und Nginx

little bottle
Freigeben: 2023-04-05 22:12:02
nach vorne
2472 Leute haben es durchsucht

1. Wissenspunkte im Zusammenhang mit Nginx und PHP-fpm bekannt machen

Was ist Nginx

Nginx („Engine x“) ist eine High- leistungsstarker HTTP- und Reverse-Proxy-Server, außerdem ein IMAP/POP3/SMTP-Server.

Was ist PHP-fpm

1. CGI, Fast-CGI-Protokoll
Die Geschichte von CGI

Frühe Webserver verarbeiteten nur HTML, usw. Statische Dateien, aber mit der Entwicklung der Technologie sind dynamische Sprachen wie PHP aufgetaucht.
Der Webserver kann damit nicht umgehen, was soll ich tun? Dann überlassen Sie es dem PHP-Interpreter!
Es ist in Ordnung, es dem PHP-Interpreter zu überlassen, aber wie kommuniziert der PHP-Interpreter mit dem Webserver?

Um das Kommunikationsproblem zwischen verschiedenen Sprachinterpretern (z. B. PHP-, Python-Interpretern) und dem Webserver zu lösen, erschien das CGI-Protokoll. Solange Sie ein Programm gemäß dem CGI-Protokoll schreiben, können Sie eine Kommunikation zwischen dem Sprachinterpreter und dem Webwerver erreichen. Wie zum Beispiel ein PHP-CGI-Programm.

Verbesserungen von Fast-CGI

Mit dem CGI-Protokoll wird das Problem der Kommunikation zwischen dem PHP-Interpreter und dem Webserver gelöst und der Webserver kann endlich dynamische Sprachen verarbeiten.
Jedes Mal, wenn der Webserver eine Anfrage erhält, wird er jedoch einen CGI-Prozess forken und den Prozess dann beenden, nachdem die Anfrage abgeschlossen ist. Bei 10.000 Anfragen muss der PHP-CGI-Prozess 10.000 Mal geforkt und beendet werden.

Haben Sie schon einmal festgestellt, dass es eine Verschwendung von Ressourcen ist?

Als Ergebnis erschien eine verbesserte Version von CGI, Fast-CGI. Nachdem jede Anforderung von fast-cgi verarbeitet wurde, wird der Prozess nicht beendet, sondern beibehalten, sodass der Prozess mehrere Anforderungen gleichzeitig verarbeiten kann. Auf diese Weise ist es nicht erforderlich, einen Prozess jedes Mal neu zu forken, was die Effizienz erheblich verbessert.

2. Was ist php-fpm

php-fpm ist php-Fastcgi Process Manager.
php-fpm ist die Implementierung von FastCGI und bietet Prozessverwaltungsfunktionen.
Der Prozess umfasst den Master-Prozess und den 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. Es gibt im Allgemeinen mehrere Worker-Prozesse (die spezifische Anzahl wird entsprechend den tatsächlichen Anforderungen konfiguriert). Darin eingebettet ist PHP, wo der Code tatsächlich ausgeführt wird.

2. So kombinieren Sie Nginx mit PHP-fpm

Wir wissen, dass Nginx nicht nur die Funktion hat, http-Anfragen zu verarbeiten, sondern auch Reverse-Proxy ausführen kann.
Also leitet Nginx dynamische Anfragen über die Reverse-Proxy-Funktion an das Backend PHP-FPM weiter.

Lassen Sie uns ein neues Nginx+Php-fpm konfigurieren

1. Konfigurieren Sie die Datei nginx.conf

Geben Sie das Verzeichnis nginx ein und bearbeiten Sie die Datei nginx.conf.
Wie in der Abbildung gezeigt, fügen Sie in der letzten Zeile von nginx.conf die Include-Datei

hinzu. 2. Fügen Sie den entsprechenden Server

hinzu Geben Sie oben den Include-Pfad ein und fügen Sie einen Server hinzu.

Lassen Sie uns die Bedeutung der Konfigurationselemente erklären:


server {    listen       80; #监听80端口,接收http请求
    server_name  www.example.com; #就是网站地址
    root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径
    #路由到网站根目录www.example.com时候的处理
    location / {        index index.php; #跳转到www.example.com/index.php
        autoindex on;
    }   

    #当请求网站下php文件的时候,反向代理到php-fpm
    location ~ \.php$ {        include /usr/local/etc/nginx/fastcgi.conf; #加载nginx的fastcgi模块
        fastcgi_intercept_errors on;        fastcgi_pass   127.0.0.1:9000; #nginx fastcgi进程监听的IP地址和端口
    }

}
Nach dem Login kopieren

Kurz gesagt: Wenn wir www.example.com besuchen, ist der Verarbeitungsablauf wie folgt:


 www.example.com        
           |
        |
       Nginx        
         |
        |
   路由到www.example.com/index.php        
        |
        |
  加载nginx的fast-cgi模块        
           |
        |
  fast-cgi监听127.0.0.1:9000地址        
           |
        |
  www.example.com/index.php请求到达127.0.0.1:9000
        |
        |
   等待处理。。。
Nach dem Login kopieren

Jetzt aktivieren wir PHP-FPM von PHP um diese Anfrage zu bearbeiten

Öffnen Sie die Datei php-fpm.conf und wir sehen die folgende Konfiguration:

Das heißt: Das PHP-FPM-Modul lauscht den Port 127.0.0.1:9000 und wartet auf die Bearbeitung der Anfrage.

3. Zusammenfassung

Die Kombination von Nginx und PHP-FPM, der gesamte Prozess ist so.


nginx与php-fpm的结合,完整的流程是这样的。

     www.example.com        
            |
        |
      Nginx        
         |
        |
    路由到www.example.com/index.php        
          |
        |
    加载nginx的fast-cgi模块        
          |
        |
    fast-cgi监听127.0.0.1:9000地址        .
          |
        |
   www.example.com/index.php请求到达127.0.0.1:9000
        |
        |
  php-fpm 监听127.0.0.1:9000
        |
        |
  php-fpm 接收到请求,启用worker进程处理请求        
           |
        |
   php-fpm 处理完请求,返回给nginx        
           |
        |
  nginx将结果通过http返回给浏览器
Nach dem Login kopieren

4. Effektanzeige

1. Nginx- und PHP-FPM-Module starten

Erfolgreich gestartet, wir überprüfen den PHP-FPM-Prozess

Wie oben gezeigt, gibt es einen Master-Prozess und 3 Worker-Prozesse .

2. Erstellen Sie eine Datei im Website-Verzeichnis

Wir bearbeiten die Datei wie unten gezeigt:

3 🎜>

【Verwandte Tutorials: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDer Funktionsmechanismus und die Prinzipien zwischen PHP und Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage