fbpx
维基百科

FastCGI

快速通用网关接口Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增強版本。

FastCGI致力於減少網頁伺服器CGI程式之間互動的開銷,從而使伺服器可以同時處理更多的網頁請求。

歷史 编辑

通用网关接口协议(CGI)是一种对接应用程序和网络服务器的接口协议。CGI使外部程式與Web伺服器之間交互成為可能。CGI程式運行在獨立的進程中,並對每個Web請求建立一個進程,這種方法非常容易實現,但效率较差,難以擴展。

CGI程式運行在獨立的進程中,並對每個Web請求建立一個進程,在结束时销毁。这种“每个请求一个新进程”的模型使得CGI程序非常容易實現,但效率较差,難以擴展。在高负载情况下,进程创建和销毁进程的开销变得很大。此外,由於地址空間無法共享,CGI进程模型限制了资源重用方法,如重用数据库连接、内存缓存等。

为了解决CGI的可伸缩性缺点,Open Market英语Open Market开发了FastCGI,并在20世纪90年代中期首次在他们的网络服务器产品中引入了它。Open Market最初开发FastCGI的部分原因是作为对网景公司开发网络应用程序的专有、进程内API(网景服务器API)的竞争回应。

虽然FastCGI最初是由Open Market开发的,但后来被其他几家网络服务器制造商实施。然而,它的方法与其他加速和简化服务器-子程序通信的方法相竞争。像mod_perl和mod_php这样的Apache HTTP服务器模块几乎是同时出现的,并且很快流行起来。截至2019年,包括CGI在内的所有这些不同方法仍在普遍使用。

實現 编辑

与为每个请求创建一个新的进程不同,FastCGI使用持续的进程来处理一连串的请求。这些进程由FastCGI服务器管理,而不是web服务器。[1]

当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket比如FastCGI进程与web服务器(都位于本地)或者一个TCP 请求(FastCGI进程在远端的server farm)传递给FastCGI进程。[1]

服务传入请求时,网络服务器通过Unix域套接字命名管道TCP连接向FastCGI进程发送环境变量信息和页面请求。响应通过相同的连接从进程返回到网络服务器,然后网络服务器将该响应传递给最终用户。连接可能在响应结束时关闭,但是web服务器和FastCGI服务进程都将持续,不会被销毁。[2]

每个单独的FastCGI进程在其生命周期内可以处理许多请求,从而避免了每个请求进程创建和终止的开销。并发处理多个请求可以通过几种方式来完成:通过内部多路复用使用一个连接(即一个连接上的多个请求);通过使用多个连接;或者通过这些方法的混合。可以配置多个FastCGI服务器,提高稳定性和可扩展性。

优点 编辑

网站管理员和程序员可以发现,在FastCGI中将网络应用程序与网络服务器分离比嵌入式解释器(mod_perl、mod_php等)有许多优点。这种分离允许服务器和应用程序进程独立重启——这是繁忙网站的一个重要考虑因素。它还能够实现每个应用程序的托管服务安全策略,这是对ISPs和网络托管公司的一个重要要求。[3]不同类型的传入请求可以分发到特定的FastCGI服务器,这些服务器已被配置为高效地处理这些类型的请求。

实现FastCGI的網頁伺服器 编辑

  • Apache HTTP Server (部分)
    • 通過mod_fcgid模塊實現。這個模塊曾屬於第三方,但是在2009年被授予ASF,成為Apache的一個子項目[4]。它只支持Unix域套接字,不支持TCP套接字。[5]
    • 一個較早的第三方模塊 mod_fastcgi 。但是这个模块从Apache 2.4.x 开始就不再被一同编译了。[6] 虽然这个模块相关的bug早就被解决了。[7]
    • Apache 1.x 在设计上禁止多路复用单个连接接收请求[8],因此Aapache 1.x是不支持的。
    • 在 Aapache 2.4 中,添加了新的mod_proxy_fcgi模块,支持TCP FastCGI服务器。
  • Caddy[9]
  • Cherokee HTTP Server
  • Hiawatha Webserver英语Hiawatha_(web_server)
  • Lighttpd[10]
  • Nginx[11]
  • LiteSpeed Web Server
  • Microsoft IIS
  • Jetty[12]
  • Kerio WebSTAR
  • OpenBSDhttpd(8)[13]
  • Open Market 网络服务器

参见 编辑

参考资料 编辑

  1. ^ 1.0 1.1 FastCGI Specification. Open Market, Inc. 1996 [2020-03-24]. (原始内容于2016-01-19).  |url-status=|dead-url=只需其一 (帮助)
  2. ^ FastCGI:A High-Performance Web Server Interface. Open Market, Inc. 1996 [2020-03-24]. (原始内容于2010-10-01).  |url-status=|dead-url=只需其一 (帮助)
  3. ^ Heinlein, Paul. FastCGI: Persistent Applications for Your Web Server. Linux Journal. 1 November 1998 [4 October 2010]. (原始内容于2020-03-24). 
  4. ^ FastCGI apache module mod_fcgid. [2020-03-24]. (原始内容于2020-03-28). 
  5. ^ Debian bug #450748: Please add support for TCP/IP FastCGI servers. [2020-03-24]. (原始内容于2020-05-28). 
  6. ^ Issues with Apache 2.4 and PHP-FPM. [2012-03-27]. (原始内容于2012-03-27). 
  7. ^ libapache-mod-fastcgi on Github. [2020-03-24]. (原始内容于2020-05-28). 
  8. ^ . [2006-02-21]. (原始内容存档于2010-02-08). 
  9. ^ Caddy User Guide – FastCGI. [2020-03-24]. (原始内容于2019-07-01). 
  10. ^ FastCGI for Lighttpd. [2020-03-24]. (原始内容于2008-12-05). 
  11. ^ FastCGI Extension for IIS6.0 – RTM. FastCGI for IIS. Microsoft. 2008-02-28 [2008-02-29]. (原始内容于2007-11-14). 
  12. ^ FastCGI Support in Jetty. [2020-03-24]. (原始内容于2020-03-24). 
  13. ^ OpenBSD's httpd(8) initial commit. [2020-03-24]. (原始内容于2020-05-28). 

fastcgi, 快速通用网关接口, fast, common, gateway, interface, 是一种让交互程序与web服务器通信的协议, 是早期通用网关接口, 的增強版本, 致力於減少網頁伺服器與cgi程式之間互動的開銷, 從而使伺服器可以同時處理更多的網頁請求, 目录, 歷史, 實現, 优点, 实现的網頁伺服器, 参见, 参考资料歷史, 编辑通用网关接口协议, 是一种对接应用程序和网络服务器的接口协议, cgi使外部程式與web伺服器之間交互成為可能, cgi程式運行在獨立的進程中, 並對每個web請. 快速通用网关接口 Fast Common Gateway Interface FastCGI 是一种让交互程序与Web服务器通信的协议 FastCGI是早期通用网关接口 CGI 的增強版本 FastCGI致力於減少網頁伺服器與CGI程式之間互動的開銷 從而使伺服器可以同時處理更多的網頁請求 目录 1 歷史 2 實現 3 优点 4 实现FastCGI的網頁伺服器 5 参见 6 参考资料歷史 编辑通用网关接口协议 CGI 是一种对接应用程序和网络服务器的接口协议 CGI使外部程式與Web伺服器之間交互成為可能 CGI程式運行在獨立的進程中 並對每個Web請求建立一個進程 這種方法非常容易實現 但效率较差 難以擴展 CGI程式運行在獨立的進程中 並對每個Web請求建立一個進程 在结束时销毁 这种 每个请求一个新进程 的模型使得CGI程序非常容易實現 但效率较差 難以擴展 在高负载情况下 进程创建和销毁进程的开销变得很大 此外 由於地址空間無法共享 CGI进程模型限制了资源重用方法 如重用数据库连接 内存缓存等 为了解决CGI的可伸缩性缺点 Open Market 英语 Open Market 开发了FastCGI 并在20世纪90年代中期首次在他们的网络服务器产品中引入了它 Open Market最初开发FastCGI的部分原因是作为对网景公司开发网络应用程序的专有 进程内API 网景服务器API 的竞争回应 虽然FastCGI最初是由Open Market开发的 但后来被其他几家网络服务器制造商实施 然而 它的方法与其他加速和简化服务器 子程序通信的方法相竞争 像mod perl和mod php这样的Apache HTTP服务器模块几乎是同时出现的 并且很快流行起来 截至2019年 包括CGI在内的所有这些不同方法仍在普遍使用 實現 编辑与为每个请求创建一个新的进程不同 FastCGI使用持续的进程来处理一连串的请求 这些进程由FastCGI服务器管理 而不是web服务器 1 当进来一个请求时 web服务器把环境变量和这个页面请求通过一个socket比如FastCGI进程与web服务器 都位于本地 或者一个TCP 请求 FastCGI进程在远端的server farm 传递给FastCGI进程 1 服务传入请求时 网络服务器通过Unix域套接字 命名管道或TCP连接向FastCGI进程发送环境变量信息和页面请求 响应通过相同的连接从进程返回到网络服务器 然后网络服务器将该响应传递给最终用户 连接可能在响应结束时关闭 但是web服务器和FastCGI服务进程都将持续 不会被销毁 2 每个单独的FastCGI进程在其生命周期内可以处理许多请求 从而避免了每个请求进程创建和终止的开销 并发处理多个请求可以通过几种方式来完成 通过内部多路复用使用一个连接 即一个连接上的多个请求 通过使用多个连接 或者通过这些方法的混合 可以配置多个FastCGI服务器 提高稳定性和可扩展性 优点 编辑网站管理员和程序员可以发现 在FastCGI中将网络应用程序与网络服务器分离比嵌入式解释器 mod perl mod php等 有许多优点 这种分离允许服务器和应用程序进程独立重启 这是繁忙网站的一个重要考虑因素 它还能够实现每个应用程序的托管服务安全策略 这是对ISPs和网络托管公司的一个重要要求 3 不同类型的传入请求可以分发到特定的FastCGI服务器 这些服务器已被配置为高效地处理这些类型的请求 实现FastCGI的網頁伺服器 编辑Apache HTTP Server 部分 通過mod fcgid模塊實現 這個模塊曾屬於第三方 但是在2009年被授予ASF 成為Apache的一個子項目 4 它只支持Unix域套接字 不支持TCP套接字 5 一個較早的第三方模塊 mod fastcgi 但是这个模块从Apache 2 4 x 开始就不再被一同编译了 6 虽然这个模块相关的bug早就被解决了 7 Apache 1 x 在设计上禁止多路复用单个连接接收请求 8 因此Aapache 1 x是不支持的 在 Aapache 2 4 中 添加了新的mod proxy fcgi模块 支持TCP FastCGI服务器 Caddy 9 Cherokee HTTP Server Hiawatha Webserver 英语 Hiawatha web server 支持FastCGI的負載平衡 支持chrooted FastCGI 伺服器 Lighttpd 10 Nginx 11 LiteSpeed Web Server Microsoft IIS Jetty 12 Kerio WebSTAR OpenBSD 的 httpd 8 13 Open Market 网络服务器参见 编辑CGI IIS nginx参考资料 编辑 1 0 1 1 FastCGI Specification Open Market Inc 1996 2020 03 24 原始内容存档于2016 01 19 url status 和 dead url 只需其一 帮助 FastCGI A High Performance Web Server Interface Open Market Inc 1996 2020 03 24 原始内容存档于2010 10 01 url status 和 dead url 只需其一 帮助 Heinlein Paul FastCGI Persistent Applications for Your Web Server Linux Journal 1 November 1998 4 October 2010 原始内容存档于2020 03 24 FastCGI apache module mod fcgid 2020 03 24 原始内容存档于2020 03 28 Debian bug 450748 Please add support for TCP IP FastCGI servers 2020 03 24 原始内容存档于2020 05 28 Issues with Apache 2 4 and PHP FPM 2012 03 27 原始内容存档于2012 03 27 libapache mod fastcgi on Github 2020 03 24 原始内容存档于2020 05 28 FastCGI The Forgotten Treasure Section 2 3 2006 02 21 原始内容存档于2010 02 08 Caddy User Guide FastCGI 2020 03 24 原始内容存档于2019 07 01 FastCGI for Lighttpd 2020 03 24 原始内容存档于2008 12 05 FastCGI Extension for IIS6 0 RTM FastCGI for IIS Microsoft 2008 02 28 2008 02 29 原始内容存档于2007 11 14 FastCGI Support in Jetty 2020 03 24 原始内容存档于2020 03 24 OpenBSD s httpd 8 initial commit 2020 03 24 原始内容存档于2020 05 28 取自 https zh wikipedia org w index php title FastCGI amp oldid 77008971, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。