PHP-FPM 与 NGINX 通信过程

看了论坛中各种 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 接收并返回客户端
            |
            |
           结束
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 2

流程是写出来了,但是缺少分析,缺少总结,写得不够详细

4年前 评论

FastCGI 工作流程图 这张图应该可以很好的描述对应的过程,对应文章我觉得也讲的挺好🔗

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!