用于静态内容的轻量级HTTP应用程序/服务器

时间:2010-04-24 14:54:09

标签: webserver nginx lighttpd apache static-content

我需要一个可扩展且高性能的HTTP应用程序/服务器,用于静态文件服务/上传。所以我只需要支持GETPUT操作。

但是,我需要一些额外的功能:

  • 自定义身份验证:我需要 检查每个请求的数据库凭据。 因此,我必须能够整合专业 数据库交互。
  • 支持 签名访问密钥:访问权限 应签署PUT资源 使用像http://uri/?key=foo之类的密钥然后密钥包含有关请求的信息,例如md5(用户+路径+秘密),它允许我阻止不需要的请求。应用程序/服务器应该允许我检查这个。
  • 表现:我想尽可能避免管道内容。否则整个应用程序可以在Perl / etc中实现。在几行中作为CGI。

Perlbal (在网络服务器模式下)看起来不错,但是单线程模型不适合我的数据库查找,它也不支持查询字符串。

Lighttp / Nginx / ... 有一些模块用于完成这些任务,但是将所有内容放在一起并且最终编写自己的扩展/模块是不可行的。

那你怎么解决这个问题呢?是否有其他轻量级网络服务器可用于此? 我应该在网络服务器(即CGI)内实现一个应用程序。如何避免/加速网络服务器和我的应用程序之间的管道内容。

提前致谢!

2 个答案:

答案 0 :(得分:4)

查看nodejs http://nodejs.org/

静态Web服务器和数据库接口有几个模块: http://wiki.github.com/ry/node/modules

您可能必须编写自己的文件上传处理程序,或使用此示例http://www.componentix.com/blog/13

中的一个

答案 1 :(得分:3)

使用C + memcached + sqlite编写的nginx + spawn-fcgi + fcgi应用程序可以很好地完成类似任务,对于小数据和来自同一本地网络的快速连接,延迟大约为20-30 ms。据我所知,生产服务器每秒处理大约100-150个请求没有问题。在测试服务器上,我的峰值达到每秒20k个请求,同样没有问题,平均延迟大约为60毫秒。积极的缓存和UNIX域套接字是关键。

不知道该配置对频繁的PUT请求的行为如何,在我们的任务中,它们非常罕见并且通常是批处理的。