PHP-FPM 與 NGINX 通訊過程

dfzhou6發表於2019-04-20

看了論壇中各種 PHP-FPM 與 NGINX 通訊的解釋,在這裡依照自己的理解,再總結鞏固一下。

什麼是 PHP-FPM

PHP-FPM 英文全稱 (PHP FastCGI Process Manager) PHP FastCGI 程式管理器。

FastCGI (通用閘道器介面) 可以認為是一種通訊協議,nginx 伺服器就是通過這種通訊協議與 php 程式打交道的。所以 PHP-FPM 就是以 FastCGI 為通訊協議的 php 程式管理器。

NGINX 如何處理 PHP 請求

通過一個 nginx 的配置檔案可以瞭解到:

server {
    listen       80; #監聽80埠,接收http請求
    server_name  www.example.com; #網站地址
    root /usr/local/etc/nginx/www/; #準備存放程式碼工程的路徑

    #路由到網站根目錄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; #php-fpm的master程式監聽的ip地址和埠
    }

}

一個 php 請求過程大致如下:

           開始
            |
            |
 www.example.com/index.php
            |
            |
      nginx 80 埠
            |
            |
  nginx 載入 fastcgi 模組
            |
            |
反向代理到 fpm 監聽的 9000 埠
            |
            |
  fpm 處理請求並返回至 nginx 
            |
            |
   nginx 接收並返回客戶端
            |
            |
           結束

相關文章