nginx 和 php 交互的有点介绍

Nginx

在 web 开发中, php 和 nginx 是很常见的一个组合,那它们是如何交互的呢?

 首先,我们来看一下一个简单的 nginx 服务配置:

从配置中我们可以看到,nginx 有用到了 php-cgi 和 fastcgi 。

CGI 和 FastCGI

CGI (Common Gateway Interface) 是能让web服务器和CGI脚本共同处理客户的请求的协议。

  其中Web服务器负责管理连接,数据传输,网络交互等。至于CGI脚本就负责管理具体的业务逻辑。

  Web服务器的功能是将客户端请求(HTTP Request)转换成CGI脚本请求,然后执行脚本,接着将CGI脚本回复转换为客户端的回复(HTTP Response)

  CGI的脚本请求有两部分:请求元数据(request meta-variables)和相关的消息体(message-body)。

FastCGI则是一种常住进程的CGI模式:

  我们所熟知的PHP-FPM的全称是PHP FastCGI Process Manager,即PHP-FPM会通过用户配置来管理一批FastCGI进程,例如在PHP-FPM管理下的某个FastCGI进程挂了,PHP-FPM会根据用户配置来看是否要重启补全,PHP-FPM更像是管理器,而真正衔接Nginx与PHP的则是FastCGI进程。

交互流程图:

 

fasCGI 与 php

如下 nginx 引入的 fastcgi 配置,,下面的参数 是不是很熟悉,php 全局参数 $_SERVER 中的参数便是这些

 

参考文章:

    你确定你真的懂Nginx与PHP的交互: https://www.imooc.com/article/19278

    CGI的一些知识点:http://www.cnblogs.com/yjf512/archive/2012/12/24/2830730.html

posted @ 2018-03-16 00:02  yangs0  阅读(145)  评论(0编辑  收藏  举报