搞清Lighttpd、webserver、CGI、fastCGI这几个概念

一、webserver:

网页浏览也是网络通信,浏览器相当于TCPclient客户端程序,和浏览器相对应的是机房里运行的网站服务器,里面运行着TCPserver服务端程序,因为网页传输使用的是HTTP协议(加密的是HTTPS协议),所以这个TCPserver程序必须按照HTTP协议(也就是按照HTTP协议来组包)来开发,因为这种程序专用于网站,所以叫webserver/httpserver。技术高超的公司可以自己开发,已经有很成熟的开源webserver。在UNⅨ和LINUX平台下使用最广泛的免费HTTP服务器是Apache和Nginx服务器,而Windows平台NT/2000/2003使用ⅡS的WEB服务器。

在嵌入式中常见的轻量级的服务器有:Lighttpd、 Shttpd,、Thttpd、Boa、Mini_httpd、Appweb、Goahead。

二、Lighttpd

LigHttpd是一个开源的轻量级嵌入式Web server,是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。

lighttpd是Lighty HTTP Server的缩写,是一个开源的Web服务器,,lighttpd (http://lighttpd.net/)和apache一样是开源的,与apache相比,虽然功能不及apache完善,稳定性也不如 apache,但是,不管是服务静态页面,还是服务动态内容(CGI,PHP),它都比apache快。

安装配置如下:

搞清Lighttpd、webserver、CGI、fastCGI这几个概念_第1张图片

搞清Lighttpd、webserver、CGI、fastCGI这几个概念_第2张图片

https://groups.google.com/g/netkiller/c/IF050Z78AlIicon-default.png?t=N7T8https://groups.google.com/g/netkiller/c/IF050Z78AlI

三、CGI(协议)

http://www.graphcomp.com/info/specs/cgi11.html

搞清Lighttpd、webserver、CGI、fastCGI这几个概念_第3张图片

(Common Gateway Interface) 代表“通用网关接口”。  它是一个标准协议,定义 Web 服务器如何与外部应用程序或脚本交互以处理 HTTP 请求并生成动态 Web 内容。  在 PHP、Python 和 Ruby 等服务器端脚本语言出现之前,CGI 是最早用于动态网页生成的方法之一
当客户端(通常是 Web 浏览器)向 Web 服务器发送 HTTP 请求时,服务器会处理该请求,并且在静态内容(如 HTML 和图像)的情况下,直接提供所请求的文件。  然而,当请求的内容是动态的并且需要即时生成时,服务器可以使用CGI与外部程序通信来进行处理。
以下是 CGI 工作原理的基本概述:

  1. 1. 客户端向 Web 服务器发送 HTTP 请求。

  2. 2. Web服务器接收请求并识别出请求的内容需要动态处理。

  3. 3. Web 服务器将请求连同请求中的必要环境变量和数据(例如,查询参数、表单数据等)一起传递给 CGI 程序或脚本。

  4. 4. CGI 程序处理请求并生成动态内容,通常采用 HTML 形式。

  5. 5. CGI程序将生成的内容发送回Web服务器。

  6. 6. Web 服务器将 HTTP 响应中的动态内容返回给客户端,客户端将其呈现在 Web 浏览器中。

CGI 程序可以用各种编程语言编写,例如 Perl、Python、Ruby、C、C++ 等。它们作为与 Web 服务器分开的进程执行,这意味着对 CGI 程序的每个请求都会产生启动新进程的开销
虽然 CGI 在当时具有革命性意义并支持动态 Web 内容,但它也有一定的局限性,包括性能开销和可扩展性问题。  因此,现代 Web 开发已在很大程度上摆脱了 CGI,转而采用更高效、可扩展的服务器端脚本技术,例如 PHP、Node.js 和各种应用程序框架。
如今,CGI 主要用于需要与遗留系统或专用环境兼容的特定情况。  对于通用 Web 开发,首选更高效的替代方案。

搞清Lighttpd、webserver、CGI、fastCGI这几个概念_第4张图片

https://ycchen.im.ncnu.edu.tw/cgi/

四、fastCGI(协议)

FastCGI 是通用网关接口 (CGI) 的变体,它解决了传统 CGI 的性能和可扩展性限制。  它是一种协议,允许 Web 服务器与外部应用程序进程高效通信,从而为 Web 应用程序生成动态内容。
使用传统的 CGI,每个请求都会生成一个新进程,从而导致显着的性能开销。  FastCGI 通过引入持久应用程序进程池对此进行了改进,即使在处理请求后该进程池仍保持活动状态。  该进程池无需为每个传入请求启动新进程,从而减少了开销并提供更好的性能和资源利用率。
FastCGI 的工作原理如下:

  1. 1. 客户端向 Web 服务器发送 HTTP 请求。

  2. 2. Web 服务器通过套接字或 TCP/IP 连接将请求以及必要的环境变量和请求数据传递给 FastCGI 应用程序。

  3. 3. FastCGI 应用程序处理请求并生成动态内容(例如,HTML、JSON 等)。

  4. 4. FastCGI 进程并没有终止应用程序进程,而是保持活动状态并等待下一个请求。

  5. 5. Web 服务器接收来自 FastCGI 应用程序的响应,并在 HTTP 响应中将其发送回客户端。

FastCGI 与传统 CGI 相比具有以下几个优点:

  1. 1. 减少开销:通过重用应用程序进程,FastCGI 消除了为每个请求创建和终止进程的开销。

  2. 2. 改进的性能:持久进程池可以加快后续请求的响应时间,因为应用程序不需要为每个新请求重新加载。

  3. 3. 资源效率:与为每个请求生成新进程相比,持久进程池消耗的资源更少。

  4. 4. 可扩展性:FastCGI允许Web服务器处理更高数量的并发请求,提高Web应用程序的可扩展性。

FastCGI 广泛用于 Web 服务器配置中,以有效处理动态内容生成。  Nginx 和 Apache 等流行的 Web 服务器支持 FastCGI,使其成为托管用 PHP、Python、Ruby 等语言编写的动态 Web 应用程序的标准选择。
总而言之,FastCGI 是 CGI 的扩展,通过采用持久的应用程序进程池来处理传入请求,显着提高了 Web 应用程序的性能和资源利用率。

参考文章:CGI、FastCGI和PHP-FPM关系图解 - 歪麦博客

你可能感兴趣的:(服务器,c语言,嵌入式硬件)