主要目标是从流行的Web服务器代码库(在C中实现)中学习,优先考虑结构/设计而不是整个代码中的巧妙技巧。
我没有包含Apache,因为它的代码库比上面提到的两个大一个数量级。
答案 0 :(得分:5)
Ngxinx可能只是我遇到过的最好的直接代码库。我已经阅读了大量的Apache,我总是感觉不洁,这是一个单一的混乱。
您不仅可以通过探索Nginx来了解Web服务器,而且几乎是在Unix和Direct-c下编写网络软件的最佳实践,从代码架构到元编程技术。
我没有听到关于Lighttpd的好消息,但与Nginx相比,它的范围有限。因此,如果我是你,我会花时间在nginx上。尽管lighttpd的有限范围可能对您有益,但作为第一个研究对象。
答案 1 :(得分:3)
诚实地说,在任何值得盐的代码库中都会出现巧妙的技巧。然而,您可能不想听到的答案是,研究两者可能会很好,这样您就可以通过交叉点来学习。替代方案可能会让你陷入“lighthttpd”方式或“nginx”方式等方面。
答案 2 :(得分:0)
我没有包含Apache,因为它的代码库比上面提到的两个大一个数量级。
实际上Apache代码非常易读。它有很大的代码库,因为它做了很多事情。但它结构合理,易于理解。您还可以查看APR库(Apache Portable Runtime),它有许多值得学习的小东西。
IMO如果你想学习编程,你应该从低调的项目开始 - 而不是HTTPd,但更简单。
nginx和LightHTTPd(就像Apache一样)都是生产质量的软件,意味着非常陡峭的学习曲线。不幸的是,学习通常意味着挖掘档案以了解为什么会这样 - 这与任何成熟项目的年龄一致。
如果您只是进入C和学习设计,您可能需要检查FreeBSD或其衍生产品。根据我的经验,这是一个更好的起点:那里有许多工具和所有口径的库。而且他们的TODO列表永远不会是空的,这可以作为从哪里开始的指南。