六款小巧的HTTP Server[C语言] - 贵贵的博客 - 开发|架构|开源|共享

六款小巧的HTTP Server[C语言] - 贵贵的博客 - 开发|架构|开源|共享

六款小巧的HTTP Server[C语言]

开源软件

1、micro_httpd - really small http server

特点:

    支持安全的 .. 上级目录过滤

    支持通用的MIME类型

    支持简单的目录

    支持目录列表

    支持使用 index.html 作为首页

    Trailing-slash redirection

    程序总共代码才200多行

这个httpd适合学习简单的Web Server编写学习,因为它只有一个简单的框架,只能够处理简单的静态页,可以考虑用来放静态页。

官方地址:http://www.acme.com/software/micro_httpd/

下载地址:http://www.acme.com/software/micro_httpd/micro_httpd_12dec2005.tar.gz



2、mini_httpd - small HTTP server

特点:

    支持GET、HEAD、POST方法

    支持CGI功能

    支持基本的验证功能

    支持安全 .. 上级目录功能

    支持通用的MIME类型

    支持目录列表功能

    支持使用 index.html, index.htm, index.cgi 作为首页

    支持多个根目录的虚拟主机

    支持标准日志记录

    支持自定义错误页

    Trailing-slash redirection

mini_httpd 也是相对比较适合学习使用,大体实现了一个Web Server的功能,支持静态页和CGI,能够用来放置一些个人简单的东西,不适宜投入生产使用。

官方地址:http://www.acme.com/software/thttpd/

下载地址:http://www.acme.com/software/mini_httpd/mini_httpd-1.19.tar.gz



3、thttpd - tiny/turbo/throttling HTTP server

thttpd中是一个简单,小型,轻便,快速和安全的http服务器:

简单:它能够支持HTTP/1.1协议标准,或者超过了最低水平

小巧:它具有非常少的运行时间,因为它不fork子进程来接受新请求,并且非常谨慎的分配内存(性能对比表:http://www.acme.com/software/thttpd/benchmarks.html)

便携:它能够在大部分的类Unix系统上运行,包括FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF等等

快速:它的速度要超过主流的Web服务器(Apache, NCSA, Netscape),在高负载情况下,它要快的多

安全:它努力的保护主机不受到攻击,不中断服务器



thttpd 类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好。同时它还有一个特点就是基于URL的文件流量限制,这对于下载的流量控制而言是非常方便的。象Apache就必须使用插件实现,效率较thttpd低。

thttpd跟lighttpd类似,适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合。

官方地址:http://www.acme.com/software/thttpd/

下载地址:http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz



4、lighttpd - light footprint + httpd = LightTPD

Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。

lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对这些问题。

实用起来lighttpd确实非常不错,apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低,而且反应速度相当快。

利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!

lighttpd 适合静态资源类的服务,比如图片、资源文件、静态HTML等等的应用,性能应该比较好,同时也适合简单的CGI应用的场合。



官方地址:http://www.lighttpd.net/

下载地址:http://www.lighttpd.net/download/lighttpd-1.4.16.tar.gz



5、SHTTPD - Simple HTTPD

Shttpd是另一个轻量级的web server,具有比thttpd更丰富的功能特性,支持CGI, SSL, cookie, MD5认证, 还能嵌入(embedded)到现有的软件里。最有意思的是不需要配置文件!由于shttpd可以嵌入其他软件,因此可以非常容易的开发嵌入式系统的web server,官方网站上称shttpd如果使用uclibc/dielibc(libc的简化子集)则开销将非常非常低。



特点:

    小巧、快速、不膨胀、无需安装、简单的40KB的exe文件,随意运行

    支持GET, POST, HEAD, PUT, DELETE 等方法

    支持CGI, SSL, SSI, MD5验证, resumed download, aliases, inetd模式运行

    标准日志格式

    非常简单整洁的嵌入式API

    dietlibc friendly. NOT that friendly to the uClibc (*)

    容易定制运行在任意平台:Windows, QNX, RTEMS, UNIX (*BSD, Solaris, Linux)

由于shttpd可以轻松嵌入其他程序里,因此shttpd是较为理想的web server开发原形,开发人员可以基于shttpd开发出自己的webserver!

官方网站:http://shttpd.sourceforge.net/

下载地址:http://jaist.dl.sourceforge.net/sourceforge/shttpd/shttpd-1.38.tar.gz

 

 

6、tinyhttpd

 

tinyhttpd is a very simple webserver. It is not for production use; instead it is primarily for a learning tool for persons investigating the http protocol and UNIX system calls.

Despite its simple nature, tinyhttpd supports threading and CGI scripts! For more information, see the accompanying README file and the code itself.

tinyhttpd is tested on Sparc Solaris and will probably not run on other operating systems as-is. However, commenting out the line that does threading may be all that is required to port it. I would like to autoconfiscate tinyhttpd at some point in time to help make it more portable.

There is no downloadable release of tinyhttpd, yet. Until then, you can get it by anonymous CVS.

The real homepage for tinyhttpd is the project page

地址:http://tinyhttpd.sourceforge.net/

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

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

相关文章

那些年你追过的电影竟然登上顶刊封面! 盘点思路新奇的顶刊论文

全世界只有3.14 % 的人关注了爆炸吧知识来源 | 募格课堂科研,是一项严肃且要求一丝不苟的研究工作。但你可曾想过,那些年自己追过的像葫芦娃、孙悟空等充满中国风元素的影视作品,竟然被科研人作为idea,不仅有理有据地研究还发了顶…

【Linux学习009】脚本编程之变量、条件测试和条件判断

一、Bash环境变量bash中变量有四种种类型:环境变量、本地变量(局部变量)、位置变量、特殊变量。1.环境变量环境变量作用范围最广,所有子bash进程都能够访问环境变量中的值,定义环境变量的方法是使用export关键字。举例…

特定视图呈现时发生的事件顺序

特定视图呈现时发生的事件顺序: 动作方法返回的ViewResult执行 ViewResult 使用ViewEngineCollection查找视图 ViewEngineCollection给每个注册的IViewEngine解析该视图的机会。顺序由集合中视图引擎的顺序决定 ViewResult使用ControllerContext,视图名称…

java 学习思路_Java的学习思路

1 开发环境Java SDK 下载和安装2 jvm 虚拟机运行原理3 编程基础 标识符命名规范4 Java数据类型5 运算符6 分支语句(if,switch)7 循环语句(for,while)8 函数的定义方法9 面向对象基础 面向对象与面向过程语言之间的区别10 面向对象基本思想(封装)11 类的定义方法12 对象和类的关…

22504!Windows 11 新预览版发布

面向 Dev 频道的 Windows 预览体验成员,微软现已发布 Windows 11 预览版 Build 22504。Windows 11 Insider Preview Build 22504 主要变化如下:1.为了进一步个性化 Windows 11 的文本输入体验,微软为触摸键盘带来了 13 个全新主题&#xff0c…

Nginx指南和配置详解

Nginx指南 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。更多的请见官方wiki: http://wiki.nginx.org/Ma…

ERROR (ClientException): Unexpected API Error

ERROR (ClientException): Unexpected API Error ERROR (ClientException): Unexpected API Errorposted on 2016-02-03 11:12 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/ruiy/p/5179253.html

静态路由(一)

路由器的角色: 路由器是一种专门用途的计算机,在所有数据网络的运作中都扮演着极为重要的角色。路由器主要负责连接各个网络,它的功能有: l 确定发送数据包的最佳路径 l 将数据包转发到目的地 (路由器是多个 IP 网络…

火了!女教授把自己P成女娲,登上学术期刊封面

全世界只有3.14 % 的人关注了爆炸吧知识2020年4月,江苏师范大学化学与材料科学学院副院长石枫教授在 Chinese Journal of Chemistry 上发表了题为 Axially Chiral Aryl-Alkene-Indole Framework: A Nascent Member of the Atropisomeric Family and Its Catalytic A…

Binding在WPF中的使用

闲来无事,不想打DOTA,在这里小小研究下wpf中关于Binding的东西。 咯咯 在我们印象中,Binding的意思是“绑定”,这个“绑”大概取自于Bind这个单词吧,这么理解的话就是以音译英了,没什么实际意义。 Bind这个…

WPF 模仿IconPacks库写图标按钮

先上原链接,一个很不错的wpf图标库 : https://github.com/MahApps/MahApps.Metro.IconPacks提供了大量的图标可以用,如下图:(部分截图)简单分析了一下代码,并模仿它写一个图标类和简单的使用示例&#xff1…

java线程死锁 cpu 100%_一文学会Java死锁和CPU 100% 问题的排查技巧

做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开工欲善其事,必先利其器00 本文简介作为一名搞技术的程序猿或者是攻城狮,想必你应该是对下面这两个问题有所了解,说不定你在实际的工作或者面试就有…

3D版的TagView,效果很赞

在gitHub看到的,感觉效果不错。 看看效果: Demo:http://download.csdn.net/detail/u012808234/9426716

Nginx配置相关结构划分的技巧和禁止IP访问

Nginx配置相关结构划分的技巧原文来自:http://developer.51cto.com/art/201003/190953.htm Nginx配置需要一定的技巧,我们在不断的使用和维护中就会发现这些,接下来就向大家介绍下有关Nginx配置的相关技巧。我目前的Nginx配置是拆散的&#x…

5部高分学科纪录片,在家也能受益良多!

全世界只有3.14 % 的人关注了爆炸吧知识▌导读本文为同学们整理了5部高分经典学科纪录片,这不仅是课堂学习的补充与延伸,更是开拓视野、激发学习内驱力的绝佳利器。建议收藏!(关注视频号少年数学家,呈现最直观的数学&a…

ubuntun中文读书笔记

在Linux中,所有设备都是用文件名来表示的。Linux中只有文件和目录,所有的文件和目录都以倒树状结构挂载在”/”(根目录)目录下。在Linux中如果要执行以命令可以通过 # 命令名 [-选项] 参数。在命令名、选项或者参数之间都是至少要有一个空格,…

开发Android应用 提升性能的小技巧

前  言 2015年,Android OS 目前在手机操作系统的市场占有率已达59%,权威机构预计,Android市场占有率在2016年将达到63%,由于Android的开放性,未来占有率还将不断增加,Android的NDK支持C/C语言&#xff0c…

SQL Server 中使用 Try Catch 处理异常

1 CREATE TABLE ErrorLog(2 errNum INT,3 ErrSev NVARCHAR(1000),4 ErrState INT,5 ErrProc NVARCHAR(1000),6 ErrLine INT,7 ErrMsg NVARCHAR(2000)8 )9 10 CREATE PROCEDURE ProcErrorLog 11 AS 12 BEGIN 13 SELECT 14 ERROR_NUMBER() AS ErrNum,--返回导致运…

Hibernate 对象的三种状态

Hibernate 对象的三种状态 瞬时(transient): 由new操作符创建,且尚未与Hibernate Session关联的对象被认定为瞬时(Transient)的。瞬时(Transient)对象不会被持久化到数据库中,也不会…

升级Jenkins镜像,支持.NET6.0

(寒天催日短,风浪与云平)书接上文,上回咱们说到了《【Blog.Core开源】完成升级.NET 6.0》,只是代码层面的升级,今天趁着周末正好把生产环境也升级下(大家可以酌情升级哟)。过程很简单…