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

news2024/11/29 4:27:36

一、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. 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 开发,首选更高效的替代方案。

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关系图解 - 歪麦博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL连接的原理⭐️4种优化连接的手段性能提升240%

MySQL连接的原理⭐️4种优化连接的手段性能提升240%🚀 前言 上两篇文章我们说到MySQL优化回表的三种方式:索引条件下推ICP、多范围读取MRR与覆盖索引 MySQL的优化利器⭐️索引条件下推,千万数据下性能提升273%🚀 MySQL的优化…

Midjourney保姆级入门教程

文章目录 一、Midjourney注册二、新建自己的服务器三、开通订阅 AI绘画即指人工智能绘画,是一种计算机生成绘画的方式。是AIGC应用领域内的一大分支。 AI绘画主要分为两个部分,一个是对图像的分析与判断,即“学习”,一个是对图像的…

【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入

引言 在上一篇中我们介绍了MySQL ALTER命令及序列使用;在开发中,对MySQL重复数据的处理是十分重要的。这一篇我们使用命令行方式来帮助读者掌握MySQL中重复数据的操作。 上一篇链接:【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令…

02【保姆级】-GO语言开发注意事项(特色重点)

02【保姆级】-GO语言开发注意事项(特色重点) 一、Go语言的特性1.1 第一个hello word(详解)1.2 开发编译。(重要点 / 面试题)1.3 开发注意事项1.4 GO语言的转义字符1.5 注释1.6 API 文档 一、Go语言的特性 …

Libevent网络库原理及使用方法

目录 1. Libevent简介2. Libevent事件处理流程3. Libevent常用API接口3.1 地基——event_base3.2 事件——event3.3 循环等待事件3.4 自带 buffer 的事件——bufferevent3.5 链接监听器——evconnlistener3.6 基于event的服务器程序3.7 基于 bufferevent 的服务器和客户端实现 …

SpringBoot源码透彻解析—bean生命周期

先跟一段debug再看总结: 1 创建实例 InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(自定义一个对象或者代理对象)createBeanInstance(创建实例)MergedBeanDefinitionPostProcessor.postProcess…

Selenium 常用元素操作

常用浏览器操作 1、初始化浏览器会话 from selenium import webdrive 初始化浏览器会话--谷歌 driverwebdrive.Chrome() 2、浏览器最大化操作 driverwebdriver.Chrome() 3、设置浏览器窗口大小 driver.set_window_size(500,780) 4、关闭浏览器 driver.quit() 常用页面…

Python的网络编程一篇学透,使用Socket打开新世界

目录 1.网络概念 2.网络通信过程 2.1.TCP/IP 2.2.网络协议栈架构 3.TCP/IP介绍 3.1.ip地址 3.2.端口号 3.3.域名 4.Python网络编程 4.1.TCP/IP 4.2.socket的概念 4.3.Socket类型 4.4.Socket函数 4.5.Socket编程思想 5.客户端与服务器 5.1.tcp客户端 6.网络调试…

数据库概论

目录 什么是数据库数据库的概念模型层次模型网状模型关系模型 为什么要使用关系型数据库完整性约束结构化查询语言SQL基本语句 什么是数据库 考虑这些问题:当用户使用软件计算时,如果想要保存计算结果或者想选择不同的题目,是否要保存、读取…

C#高级--IO详解

零、文章目录 IO详解 1、IO是什么 (1)IO是什么 IO是输入/输出的缩写,即Input/Output。在计算机领域,IO通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。输入和输出是信息处理系统(例如计算器&…

Spring Cloud应用- Eureka原理、搭建

初期对Spring Cloud的学习以应用搭建为主,所以内容不会太枯燥。 一直以来,自以为Spring全家桶的学习中,Spring framework是基础中的基础,部分内容也还是必须要读源码去理解底层原理,SpringMVC、SpringBoot&#xff0c…

基于PESdk和EasyModbus实现录波控制逻辑和数据传输

文章目录 0. 概要1. 录波功能简介1.1 功能框架1.2 录波控制逻辑1.3 手动录波数据传输流程1.4 故障录波传输流程 2 C语言应用程序接口(API)2.1 EasyModbus接口2.2 PESdk 3 录波功能的实现3.1 功能码定义3.1.1 公共功能码3.1.2 用户自定义功能码3.1.3 保留…

维修服务预约小程序的效果如何

生活服务中维修项目绝对是需求量很高的,如常见的保洁、管道疏通、数码维修、安装、便民服务等,可以说每天都有生意,而对相关维修店企业来说,如何获得更多生意很重要。 接下来让我们看看通过【雨科】平台制作维修服务预约小程序能…

XX棋牌架设指南

一、环境要求: 1.服务器要求:WINDOWS2008或更高版本。 2.数据库要求:MS SQL SERVER 2008 R2或更高版本。 3.服务器需要安装IIS。 二、游戏部署步骤: 1.解压文件至服务器数据盘,此处以D盘为例进行说明。 2. 目录说…

树结构及其算法-用链表来实现二叉树

目录 树结构及其算法-用链表来实现二叉树 C代码 树结构及其算法-用链表来实现二叉树 以链表实现二叉树就是使用链表来存储二叉树,也就是运用动态分配内存和指针的方式来建立二叉树。 使用链表来表示二叉树的好处是节点的增加与删除操作相当容易,缺点…

MATLAB野外观测站生态气象数据处理分析实践应用

1.基于MATLAB语言 2.以实践案例为主,提供所有代码 3.原理与操作结合 4.布置作业,答疑与拓展 示意图: 以野外观测站高频时序生态气象数据为例,基于MATLAB开展上机操作: 1.不同生态气象要素文件的数据读写与批处理实现 …

Ubuntu18.04系统镜像制作

安装使用systemback # 添加源 sudo add-apt-repository --remove ppa:nemh/systemback sudo add-apt-repository "deb http://ppa.launchpad.net/nemh/systemback/ubuntu xenial main"# 下载 sudo apt update sudo apt install systemback打开systemback,点击创建li…

加州大学提出 PromptAgent 帮忙我们高效的使用 ChatGPT

本心、输入输出、结果 文章目录 加州大学提出 PromptAgent 帮忙我们高效的使用 ChatGPT前言加州大学团队提出了可以自动优化 Prompt 的框架 —— PromptAgentPromptAgent 原理论文 实例介绍PromptAgent 框架设计PromptAgent 的策略优化过过程PromptAgent 的结果是否具备普适性弘…

[Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb

一.部署nodejs项目,映射端口,挂载数据卷 可以到https://hub.docker.com/去搜索node镜像,然后下载,也可以直接通过docker pull node下载镜像,然后用这个node镜像启动容器node,这样系统就集成了node服务了,在这里挂载www/node目录到容器中,并指定端口映射,运行nodejs程序,安装npm…

【Tricks】PC端微信输入时,文本出现右对齐情况怎么恢复

应该是摁到某个快捷键,于是光标就变成如下图所示的样子: 如果再输入字符,则字符就会变成下图所示的样子(对齐输入框右侧): 解决办法:ctrl J 解决办法:ctrl J 解决办法&#xff1…