码迷,mamicode.com
首页 > 其他好文 > 详细

FastCGI 介绍

时间:2017-04-16 22:13:58      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:原理   绑定   bsp   linu   固定   服务器   common   nmp   域名   

LNMP 环境的基本请求流程 :当 LNMP 组合工作时,首先是用户通过浏览器输入域名请求 Nginx Web 服务,如果请求的是静态资源,则由 Nginx 解析返回给用户;如果是动态请求,那么 Nginx 就会把它通过 FastCGI 接口发送给 PHP 进行解析,如果这个动态请求要读取数据库数据,那么 PHP 就会继续向后请求 MySQL 数据库,以读取需要的数据,并最终通过 Nginx 服务吧获取的数据返回给用户,这就是 LNMP 环境的基本请求流程。

CGI 简介 :最早的 Web 服务器简单地响应浏览器发来的 HTTP 请求,并将存储在服务器上的 HTML 文件返回给浏览器,也就是静态 HTML。事物总是不断发展,网站也越来越复杂,所以出现动态技术,但是服务器并不能直接运行 php,asp 这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是我把请求参数发送给你,然后我接收你的处理结果给客户端,那这个约定就是 common gateway interface,公共网关接口,简称 CGI。简单来说就是由 CGI 去调用 php 或其他动态语言来执行 php,asp 这样的文件。

FastCGI 简介 :传统的 CGI 因为性能和安全性比较差,所以也就有了 FastCGI,FastCGI 将 CGI 解释器进程保持在内存中并因此获得较高的性能,在 Linux 上,FastCGI 接口即为 socket,这个 socket 可以是文件 socket 也可以是 IP socket 。FastCGI 的主要优点是把动态语言和 HTTP 服务器分离开来,使 Nginx 专门处理静态请求及向后转发的动态请求,而 PHP/PHP-FPM 服务器则专门解析 PHP 动态请求。php-fpm 是一个 PHP FastCGI 管理器,是只用于 PHP 的。php-fpm 其实是 PHP 源代码的一个补丁,旨在将 FastCGI 进程管理整合进 PHP 包中。

Nginx FastCGI 运行原理 :Nginx 不支持对外部动态程序的直接调用或者解析,所有的外部程序必须通过 FastCGI 接口来调用,FastCGI 接口在 Linux 下是 socket,为了调用 CGI 程序,还需要一个 FastCGI 的 wrapper(可以理解为用于启动一个程序的程序),这个 wrapper 绑定在某个固定的 socket 上,如端口或文件 socket,当 Nginx 将 CGI 请求发送给这个 socket 的时候,通过 FastCGI 接口,wrapper 接收到请求,然后派生出一个新的线程,这个线程调用解释器或外部程序处理脚本来读取返回的数据;接着,wrapper 再将返回的数据通过 FastCGI 接口,沿着固定的 socket 传递给 socket 传递给 Nginx;最后,Nginx 将返回的数据发送给客户端,这就是 Nginx + FastCGI 的整个运作过程。

技术分享

 

 

 

    

FastCGI 介绍

标签:原理   绑定   bsp   linu   固定   服务器   common   nmp   域名   

原文地址:http://www.cnblogs.com/pzk7788/p/6720270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!