nginx

Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。

cgi,fast-cgi

也叫通用网关接口,是Web服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。

早期的webserver只能处理html等静态文件,无法处理动态语言(比如php程序),于是出现了cgi协议,只要按照cgi协议去编写程序,就能实现语言解释器与webwerver的通信。

但是该方法有个缺点,就是webserver每收到一个请求,都会去fork一个cgi进程,请求结束再kill掉这个进程。很明显这很浪费资源。

于是出现了fast-cgi。fast-cgi每次处理完请求后,不会kill掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求。

php-fpm

全称:php-Fastcgi Process Manager.

php-fpm是 FastCGI 的实现,并提供了进程管理的功能。

进程包含 master 进程和 worker 进程两种进程。

master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。

Nginx + php-fpm

nginx 接收请求,然后通过反向代理功能将动态请求转向后端Php-fpm。具体流程如下:

    请求
     |
    nginx
     |
    加载nginx fast-cgi模块
     |
    fast-cgi监听127.0.0.1:9000地址
     |
    请求到达127.0.0.1:9000
     |
    php-fpm 监听127.0.0.1:9000(master进程)
     |
    php-fpm 接收到请求,启用worker进程处理请求
     |
    php-fpm 处理完请求,返回给nginx
     |
    nginx将结果通过http返回给浏览器
    

nginx 相关命令

  • service nginx start
  • service nginx stop
  • service nginx restart
  • service nginx status
  • nginx -s reload

php-fpm 相关命令

  • service php7.3-fpm start
  • service php7.3-fpm stop
  • service php7.3-fpm restart
  • service php7.3-fpm status
  • php7.3-fpm -s reload

文章参考:

https://zhuanlan.zhihu.com/p/439799459