为什么要使用Apache或Nginx等服务器?

6
我被分配了一个项目,需要我添加一些HTML页面服务。这个嵌入式系统(运行Linux CentOS 6.3)有一些额外的资源可用,但也已经有了许多职责。
我考虑过Apache,但因其庞大而放弃了它,我研究了Nginx,但现在也在回避它。看起来我得到了比我需要的更多的“功能”,结果是更多的CPU使用率。
有人能告诉我为什么我不应该使用异步套接字自己实现HTTP协议吗?
我的具体需求是:
1. 接收和解码GET和POST请求。 2. 根据对GET/POST请求的解码发送CSS、JS和JPG文件。 3. 基于对GET/POST请求的解码输出头部、cookie、头信息和正文数据。
考虑到我不需要这些Web服务器提供的无数东西,我是否天真地认为自己做是正确的?你会建议什么或者警告什么?

对于非常基本的实现,当然可以。只是要注意安全风险,因为您在缓解方面可能不如现有的Web服务器那么好。 - Lightness Races in Orbit
4
如果存在安全风险,正确地处理问题就显得尤为重要。但是你可以考虑一些较小的嵌入式Web服务器。 - Chris Stratton
2
你基本上要编写自己的Web服务器。为什么要这样做?这比使用现有的服务器要困难得多。你期望获得哪些巨大的好处来抵消这个成本呢? - user395760
3
即使只是基础的网页服务器,自己实现并修复所有错误和漏洞所需的时间,可能已经足够购买一批服务器农场,并使用一个经过良好测试和支持的网络服务器来提供HTML页面服务。 - JB Nizet
2
如果你想要一个轻量级的Web服务器,但又不想自己编写所有内容,那么你可以考虑分叉一个开源项目,并删除你自己不需要的部分以满足自己的需求。 - stefan
显示剩余6条评论
3个回答

9
基本上,你使用 Web 服务器是因为这样你可以获得你想要的功能,以一种已经被测试过、比你的第一份代码更可靠,并且得到了大量其他支持的社区。如果 Apache 和 nginx 对你来说太重(尽管 nginx 的特点就是在重负载下非常轻量级),特别是如果你预计的负载非常轻,那么请寻找其他选项。
维基百科有一个完整的页面轻量级 Web 服务器比较

在我回答这个问题的五年里,另一个选择出现了:使用Node.js。 - Charlie Martin

1
易陷入的一个陷阱:认为“我不需要产品X中的所有功能,我只需编写自己所需的功能”,最终以每次发现新要求重新实现整个产品X。
我有点怀疑能够运行CentOS的嵌入式系统是否资源匮乏到无法舒适地运行Nginx(或者甚至是Apache,在合理的假设下,人们可以通过适当的配置调整在Raspberry Pi上运行)。我曾经在一台带有大约256MB RAM的Pentium 266上运行它,用于提供几个简单的PHP应用程序,每两秒钟提供大约一页,没有任何问题。据我回忆,它相当模块化,因此您可以选择不加载您认为不需要的功能。而且,稍后,当您的要求发生变化并且您发现您确实需要它时,您可以将其插回去 :)
如果您真正关心资源消耗,请查看专为嵌入式应用程序设计的Web服务器。我听说Cherokee非常好。Mongoose也很有前途。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接