nginx与php交互

用了这么的php和nginx,习惯于nginx的配置文件和ip的映射就能完成网站的部署,我就没有深入思考过php和nginx之间的联系,还是昨天被提到我才想起来之前转载过一篇我看不懂的文章是关于php-fpm的

https://blog.youkuaiyun.com/Anglry/article/details/101674530   一年前的小白,每想到我居然错过了这些,闭门造车不如广开言路

先说说nginx和PHP的交互过程,这边文章也是一边学一边理解一边记

1>  用户先将域名或IP形式的http或https请求发送给部署好的nginx服务器,也就是客户端(这个可以是浏览器也可以是其他)和nginx服务器进行三次握手最终建立TCP连接的过程

2>nginx服务器接收到用户访问的URI(协议加主机,不含端口)和后缀,服务器对该请求进行判断和处理

3>如果用户请求的是动态内容,nginx会将请求交给fastcgi客户端,通过fastcgi_pass将用户的请求发送给php-fpm,(对于CGI的了解可以看一下我  上面的  链接)如果用户访问的是静态资源,那么nginx就不用做其他的工作了,将直接返回用户请求的静态资源返回给用户。当然静态请求地话用户和nginx服务器的交互流程就结束了,下面的是动态继续。

4>当php-fpm接收到CGI发送过来的请求时对接收到的消息进行封装(php-fpm.conf配置)到wrapper(FastCGI触发器),wrapper会产生一个新的线程调用php动态程序解析服务器(php.ini 这个是php的核心),执行php业务

即:Nginx -> FastCGI -> php-fpm -> FastCGI Wrapper -> php解析器

所以一个服务器的请求是一个单独的线程,多个请求就会产生多个FastCGI进程

补充说明:

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

 

5>php将查询到结果返回给nginx

6>nginx服务器构造一个响应报文将结果返回给用户

通过上面的流程,我能看出来,nginx服务器实际上就一个转接器,或者说中间件,负责传递和发送数据,而nginx服务器和php之间联系是通过CGI完成的。第四步:fastcgi_pass将动态资源交给php-fpm后,php-fpm会将资源转给php脚本解析服务器的wrapper

 

 

https://blog.youkuaiyun.com/qq_32595453/article/details/80563142  URI和URL的区别
https://blog.youkuaiyun.com/wuhuagu_wuhuaguo/article/details/83032578  本文借鉴来源
https://www.jb51.net/article/18209.htm web搭建

https://www.jb51.net/article/83926.htm nginx+php 配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值