ServHTTP

 
ServHTTP 是一个运行在 Unix/Linux 上的, C++ 写成的,免费的,多线程,高性能,完全模块化的 HTTP/HTTPS 应用服务器,支持 HTTP 1.0/1.1 协议。
 
功能特点
完整支持 HTTP 1.0/1.1 协议
自动分割的日志系统,并带访问日志
方便配置和友好的 Xml 形式配置文件
HTTPS (SSL) 支持
支持用浏览器直接发送指令 (fpp_get 插件提供)
支持 Xml rpc 方式的 Xml 包指令 (fpp_xml 插件提供)
支持 MySQL 身份验证 (pam_mysql 插件提供)
支持 Unix/Linux 系统用户身份验证 (pam_unix 插件提供)
支持用 Python 编写ModPam (pymod_loader和pypam_loader插件提供)
强大的模块化机制,一切都是插件。
强大的身份验证系统,支持使用多个 Pam 组成队列进行验证
插件加载器支持,使用多种语言编写插件成为可能。
验证失败次数超过限制,锁定客户端, 锁定期间拒绝该客户端一切请求。
类似 Linux 下 tcpwrappers 的访问控制,可针对网段、IP、操作、来对客户端进行限制。
 
ServHTTP 可以做什么?
  • 为分布式控制、集中化管理软件系统提供强有力的底层支持
  • 可以作为上层应用(比如 Web)与系统控制之间的桥梁
  • 她甚至可以作为一个网页服务器运行
  • 更多?发挥您的想象力吧
 
ServHTTP 的性能如何?

非常快,因为 ServHTTP 是多线程服务器,所以有着非常高的性能,并能够处理大量的并发。

在我们 P3-500 + 128 SDRAM 机器上运行的 ServHTTP, 使用客户端机器上的 Apache AB 工具做基准测试时,模拟1000 个请求去调用 ServHTTP 的 Python Mod 插件仅耗时 ~2 秒,调用 C++ 的插件也约为 2 秒左右。

 
ServHTTP 容易扩展吗?

非常容易,我们更愿意把 ServHTTP 看作是一个框架,她提供了很多途径让使用者方便地扩充她的功能,目前支持的插件类型有:

  • Pam - 身份验证插件
  • Fpp - 协议处理插件
  • Mod - 请求处理插件
  • Loader - 加载插件的插件
 
可以用什么语言编写我的 ServHTTP 程序?

目前,SH 附带了两种 Loader

  • so_loader (内置) - 用于加载 C++ 编写的共享库插件
  • pymod_loader - 用于加载 Python 编写的 Mod 插件
  • pypam_loader - 用于加载 Python 编写的 Pam 插件

如上面所说,SH 是一个完全模块化的框架,任何人都可以去实现更多的 loader 去支持用其他语言编写插件,或许下一个 ruby_loader 就是您写的 ^_^