一、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 (http://lighttpd.net/)和apache一样是开源的,与apache相比,虽然功能不及apache完善,稳定性也不如 apache,但是,不管是服务静态页面,还是服务动态内容(CGI,PHP),它都比apache快。
https://groups.google.com/g/netkiller/c/IF050Z78AlI
三、CGI(协议)
http://www.graphcomp.com/info/specs/cgi11.html
(Common Gateway Interface) 代表“通用网关接口”。 它是一个标准协议,定义 Web 服务器如何与外部应用程序或脚本交互以处理 HTTP 请求并生成动态 Web 内容。 在 PHP、Python 和 Ruby 等服务器端脚本语言出现之前,CGI 是最早用于动态网页生成的方法之一。
当客户端(通常是 Web 浏览器)向 Web 服务器发送 HTTP 请求时,服务器会处理该请求,并且在静态内容(如 HTML 和图像)的情况下,直接提供所请求的文件。 然而,当请求的内容是动态的并且需要即时生成时,服务器可以使用CGI与外部程序通信来进行处理。
以下是 CGI 工作原理的基本概述:
-
1. 客户端向 Web 服务器发送 HTTP 请求。
-
2. Web服务器接收请求并识别出请求的内容需要动态处理。
-
3. Web 服务器将请求连同请求中的必要环境变量和数据(例如,查询参数、表单数据等)一起传递给 CGI 程序或脚本。
-
4. CGI 程序处理请求并生成动态内容,通常采用 HTML 形式。
-
5. CGI程序将生成的内容发送回Web服务器。
-
6. Web 服务器将 HTTP 响应中的动态内容返回给客户端,客户端将其呈现在 Web 浏览器中。
CGI 程序可以用各种编程语言编写,例如 Perl、Python、Ruby、C、C++ 等。它们作为与 Web 服务器分开的进程执行,这意味着对 CGI 程序的每个请求都会产生启动新进程的开销。
虽然 CGI 在当时具有革命性意义并支持动态 Web 内容,但它也有一定的局限性,包括性能开销和可扩展性问题。 因此,现代 Web 开发已在很大程度上摆脱了 CGI,转而采用更高效、可扩展的服务器端脚本技术,例如 PHP、Node.js 和各种应用程序框架。
如今,CGI 主要用于需要与遗留系统或专用环境兼容的特定情况。 对于通用 Web 开发,首选更高效的替代方案。
https://ycchen.im.ncnu.edu.tw/cgi/
四、fastCGI(协议)
FastCGI 是通用网关接口 (CGI) 的变体,它解决了传统 CGI 的性能和可扩展性限制。 它是一种协议,允许 Web 服务器与外部应用程序进程高效通信,从而为 Web 应用程序生成动态内容。
使用传统的 CGI,每个请求都会生成一个新进程,从而导致显着的性能开销。 FastCGI 通过引入持久应用程序进程池对此进行了改进,即使在处理请求后该进程池仍保持活动状态。 该进程池无需为每个传入请求启动新进程,从而减少了开销并提供更好的性能和资源利用率。
FastCGI 的工作原理如下:
-
1. 客户端向 Web 服务器发送 HTTP 请求。
-
2. Web 服务器通过套接字或 TCP/IP 连接将请求以及必要的环境变量和请求数据传递给 FastCGI 应用程序。
-
3. FastCGI 应用程序处理请求并生成动态内容(例如,HTML、JSON 等)。
-
4. FastCGI 进程并没有终止应用程序进程,而是保持活动状态并等待下一个请求。
-
5. Web 服务器接收来自 FastCGI 应用程序的响应,并在 HTTP 响应中将其发送回客户端。
FastCGI 与传统 CGI 相比具有以下几个优点:
-
1. 减少开销:通过重用应用程序进程,FastCGI 消除了为每个请求创建和终止进程的开销。
-
2. 改进的性能:持久进程池可以加快后续请求的响应时间,因为应用程序不需要为每个新请求重新加载。
-
3. 资源效率:与为每个请求生成新进程相比,持久进程池消耗的资源更少。
-
4. 可扩展性:FastCGI允许Web服务器处理更高数量的并发请求,提高Web应用程序的可扩展性。
FastCGI 广泛用于 Web 服务器配置中,以有效处理动态内容生成。 Nginx 和 Apache 等流行的 Web 服务器支持 FastCGI,使其成为托管用 PHP、Python、Ruby 等语言编写的动态 Web 应用程序的标准选择。
总而言之,FastCGI 是 CGI 的扩展,通过采用持久的应用程序进程池来处理传入请求,显着提高了 Web 应用程序的性能和资源利用率。
参考文章:CGI、FastCGI和PHP-FPM关系图解 - 歪麦博客