LNMP架构总结与CGI,FastCGI的介绍

1.lnmp架构总结

  • 1.用户通过http协议发起请求,请求会先抵达LNMP架构中的nginx
  • 2.nginx会根据用户的请求进行判断,这个判断是由Location元成的
  • 3.判断用户请求的是静态页面,nginx直接进行处理-
  • 4.判断用户的请求是动态页面,nginx会将该请求交给fastcgi协议下发
  • 5.fastcgi会将请求交给php-fpm管理进程,php-fpm管理进程接收到后会调用具体的工作进程wrapper
  • 6.wrapper线程会调用php进行解析,如果只是解析php代码,那么直接返回结果给客户端
  • 7.如果有查询数据库的操作,则由php连接数据库(用户密码lR)然后发起查询的操作
  • 8.最终数据由mysql->php->php-fpm->fastcgi->nginx->http->user

2.CGl介绍

CGl(Common Gateway Interface),即通用网关接口,是WWW技术中最重要的技术之一,是外部应用程序(即CGl程序)与WEB服务器之间的接口标准,负责在CGl程序和Web服务器之间传递信息。CGl是Web服务器运行时,调用外部应用程序(即CGl程序)的规范,CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器
在这里插入图片描述
CGl程序处理步骤

1.浏览器通过HTML表单或超链接,请求指向一个CGI应用程序的URL;
2.服务器收到浏览器发送的请求;
3.服务器调用执行指定CGI应用程序;
4.CGI应用程序根据相关信息(通常是基于浏览者输入的内容 5.CGI应用程序把操作结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页),并发送给web服务器;
6.web服务器把操作结果返回给浏览器FastCGl

3.什么是FastCGI

FastCGl 实际上是增加了一些扩展功能的CGl、是CGl的改进,描述了客户端和Web服务器程序之间传输数据的一种标准。
FastCGl致力于减少Web服务器与CGl程序之间进行互动的开销,从而使Web服务器可以同时处理更多的Web请求。与CGl
为每个Web请求创建一个新的进程不同,FastCGl使用持续的进程来处理一连串的Web请求,这些进程由FastCGl进程管理器管理,而不是Web服务器
在这里插入图片描述
由于FastCGl 程序并不需要不断产生新进程,因此使用FastCGl 可以大大降低Web服务器的压力并产生较高的应用效率。
CGl就是所谓的短生存期应用程序,而FastCGl 就是所谓的长生存期应用程序,FastCGl 像是一个常驻(long-live)型的CGl,FastCGl可以一直执行着,而不会每次花费时间去fork(这也是CGl最为人诟病的 fork-and-execute模式)

4.FastCGI运行过程

1.Web服务器启动时,初始化FastCGl的程序执行环境。
例如Nginx服务器对应的ngx_http_fastcgi_module模块
2.FastCGl进程管理器自身初始化,启动多个CGI解释器进程并等待来自Web服务器的连接
3.当客户端请求到达Web服务器时,Web服务器将该请求采用socket方式转发到FastCGl 主进程,FastCGl主进程选择并连接到一个CGl解释器(关联FastCGl子进程),然后,Web服务器将CGl环境变量和标准输入发送到FastCGl 子进程。 4.FastCGl 子进程完成处理后,将标准输出和错误信息从同一socket连接返回给Web服务器。最后,FastCGl子进程关闭与Web服务器之间的连接。
5.FastCGl 子进程继续等待并处理下一个来自Web服务器的连接

发布了149 篇原创文章 · 获赞 1 · 访问量 3020

猜你喜欢

转载自blog.csdn.net/qq_36417677/article/details/104735451
今日推荐