Heim > Artikel > Backend-Entwicklung > Lassen Sie uns über den Kommunikationsmechanismus zwischen Nginx und PHP-FPM sprechen und sehen, wie man ihn konfiguriert.
In diesem Artikel geht es um den Kommunikationsmechanismus zwischen Nginx und PHP-FPM, die Unterschiede zwischen den beiden Kommunikationsmethoden, die Konfiguration der Kombination von Nginx und PHP-FPM und die Analyse der Auswahl der Kommunikationsmethode in der Anwendung. Ich hoffe, es kann allen helfen!
Die Codedateien jeder dynamischen Sprache (PHP, Python usw.) müssen den entsprechenden Parser passieren, damit sie vom Server erkannt werden Es wird das CGI-Protokoll verwendet, das es dem Interpreter und dem Server ermöglicht, miteinander zu kommunizieren. Das Parsen von PHP-Dateien auf dem Server erfordert die Verwendung eines PHP-Interpreters in Verbindung mit dem entsprechenden CGI-Protokoll, damit der Server PHP-Dateien analysieren kann.
Da der Mechanismus von CGI es erfordert, bei jeder Verarbeitung einer Anfrage einen CGI-Prozess zu forken und den Prozess dann nach Abschluss der Anfrage abzubrechen, was in praktischen Anwendungen eine Verschwendung von Ressourcen darstellt, erschien eine verbesserte Version von CGI, FastCGI Nachdem die Anfrage verarbeitet wurde, wird der FastCGI-Prozess nicht abgebrochen, sondern weiterhin mehrere Anfragen verarbeiten, was die Effizienz erheblich verbessert.
www.test.com | | Nginx | | 路由到 www.test.com/index.php | | 加载 nginx 的 fast-cgi 模块 | | fast-cgi 监听 127.0.0.1:9000 地址 | | www.test.com/index.php 请求到达 127.0.0.1:9000 | | 等待处理...
Die Kombination von Nginx und PHP-FPM
Der Unterschied zwischen den beiden:
server { listen 80; #监听 80 端口,接收http请求 server_name www.test.com; #就是网站地址 root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径 #路由到网站根目录 www.test.com 时候的处理 location / { index index.php; #跳转到 www.test.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; # tcp 方式,php-fpm 监听的 IP 地址和端口 # fasrcgi_pass /usr/run/php-fpm.sock # unix socket 连接方式 } }2) Konfiguration von php-fpm
listen = 127.0.0.1:9000 # 或者下面这样 listen = /var/run/php-fpm.sockBeachten Sie, dass es bei Verwendung der Unix-Socket-Methode zum Herstellen einer Verbindung Probleme mit der Berechtigungskontrolle gibt, da es sich bei der Socket-Datei im Wesentlichen um eine Datei handelt. Sie müssen daher auf die Berechtigungen des Nginx-Prozesses und die Berechtigungen von PHP-FPM achten, andernfalls Sie wird aufgefordert, ohne Erlaubnis darauf zuzugreifen. (Benutzer in ihren jeweiligen Konfigurationsdateien festlegen) Die Kommunikation zwischen PHP-FPM und Nginx kann über die obige Konfiguration abgeschlossen werden. Auswahl in der AnwendungWenn Nginx und PHP-FPM auf demselben Server ausgeführt werden und die Parallelität nicht hoch ist (nicht mehr als 1000), wählen Sie einen Unix-Socket, um die Kommunikationseffizienz von Nginx und PHP-FPM zu verbessern.
Wenn die Parallelität hoch ist, Sie aber dennoch den Unix-Socket verwenden möchten, können Sie die Stabilität des Unix-Sockets mit den folgenden Methoden verbessern.
server { listen 80 default backlog = 1024; }In der php-fpm.conf-Datei
listen.backlog = 10243) Fügen Sie die Sock-Datei und die PHP-FPM-Instanz hinzuErstellen Sie eine neue Sock-Datei in /dev/shm und übergeben Sie die Anfrage Über das Upstream-Modul in Nginx wird die Last auf zwei Sock-Dateien verteilt, und die beiden Sock-Dateien werden zwei Sätzen von PHP-FPM-Instanzen zugeordnet. Empfohlenes Lernen: „
PHP-Video-Tutorial
“Das obige ist der detaillierte Inhalt vonLassen Sie uns über den Kommunikationsmechanismus zwischen Nginx und PHP-FPM sprechen und sehen, wie man ihn konfiguriert.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!