LNMP架构简述(包含CGI&FastCGl)

LNMP,CGI,FastCGl工作原理简述

1.LNMP架构工作原理

  • 用户通过http协议发起请求,请求会先抵达LNMP架构中nginx

  • nginx会根据用户的请求进行判断,这个判断是由Location完成的

  • 判断用户请求的是静态页面,nginx直接进行处理

  • 判断用户的请求是动态页面,nginx会将该请求交给fastcgi协议下发

  • fastcgi会将请求交给php-fpm管理进程,php-fpm管理进程接收到后会调用具体的工作进程wrapper

  • wrapper线程会调用php进行解析,如果只是解析php代码那公直接返回结果给客户端

  • 如果有查询数据库的操作,则由php连接数据库(用户密码IP )然后发起查询的操作

  • 最终数据由mysqI -> php -> php-fpm -> fastcgi ->nginx -> http -> user

2.CGI介绍

  • CGI ( Common Gateway Interface),即通用网关接口,是WWW技术中最重要的技术之一, 是外部应用程序(即CGI程序)与WEB服务器之间的接口标准,负责在CGI程序和Web服务器之间传递信息

  • CGI是Web服务器运行时,调用外部应用程序(即CGI程序)的规范,CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器

出现背景

CGI是比较原始的开发动态网站的方式。由于静态的html页面无法实现网站的动态内容的生成,所以就需要由web务器调用CGI程序,CGI程序生成动态内容,返回给web服务器,web服务器再返回给浏览器。

功能:
CGI应用程序能通过Web服务器与浏览器进行交互,还可以通过数据库API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据,将数据格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中

CGI程序处理步骤

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

3.FastCGI

FastCGI实际上是增加了一些扩展功能的CGI,是CGI的改进,描述了客户端和Web服务器程序之间传输数据的一种标准。FastCGl致力于减少Web服务器与CGI程序之间进行互动的开销,从而使Web服务器可以同时处理更多的Web请求。 与CGI为每个Web请求创建一个新的进程不同,FastCGl 使用持续的进程来处理一连串的Web请求,这些进程由FastCGI进程管理器管理,而不是Web服务器

由于FastCGl程序并不需要不断产生新进程,因此使用FastCGI可以大大降低Web服务器的压力并产生较高的应用效率。
CGI就是所谓的短生存期应用程序,而FastCGI就是所谓的长生存期应用程序,FastCGI 像是一个常驻( long-live )型的CGI,FastCGl 可以一直执行着,而不会每次花费时间去fork (这也是CGI最为人诟病的fork-and-execute模式)

FastCGI程序处理步骤

  • Web服务器启动时,初始化FastCGI的程序执行环境。例如Nginx服务器对应的ngx_ http_ fastcgi_ module模块

  • FastCGI进程管理器自身初始化,启动多个CGI解释器进程并等待来自Web服务器的连接

  • 当客户端请求到达Web服务器时,Web服务器将该请求采用socket方式转发到FastCGl主进程,FastCGI主进程选择并连接到一个CGI解释器(关联FastCGI子进程),然后Web服务器将CGI环境变和标准输入发送到FastCGI子进程。

  • FastCGI子进程完成处理后,将标准输出和错误信息从同一socket连接返回给Web服务器。最后,FastCGI子进程关闭与Web服务器之间的连接。

  • FastCGl子进程继续等待并处理下一个来自Web服务器的连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值