我经常在本地 PC 上安装 Apache,以便测试文件或尝试直接在 PC 上托管。我使用的服务器通常是 Apache。有什么理由尝试其他服务器,如 lighttp 或 nginx?
答案1
对于绝大多数人来说,Apache 提供的性能、功能和灵活性绰绰有余。只需花一两个晚上仔细阅读Apache 文档感受丰富的特色。
我有一个在 shopping.com 工作的同事,他说他们建立了一个完整的公司mod_rewrite
在一些特殊情况下,替代 Web 服务器确实有意义 - 通常在超高性能和大规模托管环境中,相反,在内存可能受限的情况下(例如 Slicehost/linode VPS)
各种替代 Web 服务器的优点:
一般来说,如果 Apache 没有给您带来任何困难,那么您就拥有了所需的所有特性和功能。另一方面,如果您试图从 256 MByte VPS 中挤出几千个同时连接 - 您可能需要考虑查看 nginx。
答案2
这取决于网站类型、负载、内容类型等。nginx 和 lighttpd 性能高,内存/CPU 占用小。一般来说,如果您的网站只提供静态内容(图片、媒体等,没有像 php 那样的动态页面)并且有大量同时连接 - nginx 或 lighttpd 可能是更好的选择。apache 是一种多功能但更重量级的 Web 服务器,它具有高度可配置性,您可以使用它提供任何类型的内容。
nginx/lighttpd 的一个有趣且极其有用的应用是代理其背后的 apache 服务器。在这种情况下,nginx(或 lighty)接受来自用户的连接,并直接向他们提供静态内容,但将动态页面(php、cgi 等)的查询发送到 apache。因此,apache 只处理动态页面并将它们发送回代理(nginx、lighty),代理又将它们简单地提供给用户。这种方案对高负载网站非常有效。
但总的来说我同意ghs0- 在大多数情况下,Apache“具有您需要的所有特性和功能”。
答案3
我有一个 256M RAM 的虚拟服务器。为了托管我的 PHP 应用程序并节省 RAM,我决定使用lighttpd/PHP-fcgi代替Apache/mod_php。在我当前的设置中,我有 6 个 PHP 进程(4 核 CPU 的最佳配置)处理单个 lighttpd 进程发送给它们的请求。因此,无论有多少用户访问网站,内存使用量始终保持不变。虽然我没有进行负载测试,但如果此设置可以处理 slashdotting,我也不会感到惊讶。作为奖励,还为 memcached 留出了一些 RAM。
Lighttpd 功能非常齐全。它在启动时启动 fcgi 进程,在关闭时关闭它们(ngingx 不会这样做),具有 mod_rewrite 和大量其他好东西。最重要的是,配置文件比 Apache 强大得多。
当然,如果有足够的时间,我认为您也可以将 Apache 配置为类似这样的效果,但我想这并不好玩,而且可能会占用更多的 RAM。
答案4
lighttpd
的配置非常好并且很直接,例如,没有什么魔法VirtualHost
,你只需要编写if
测试HTTP_HOST
标题并在其中放入规则。
lighttpd
它mod_rewrite
的功能比 Apache 的稍弱一些,但是使用起来更容易(只需重写一次)。
当基本重写不能解决问题时,lighttpdmod_magnet
可以让你用 Lua 编写重写。我学习 Lua 所花的时间比调试mod_rewrite
Apache 上的一般问题所花的时间还短 :)
lighttpd
还有mod-trigger-b4-dl
和X-lighttd-sendfile
,它们都允许您轻松实现具有自定义身份验证机制的文件访问(例如,保护文档集合的 PHP 脚本,使用 lighttpd 有效处理文件的发送)。
Apache+mod_php
在使用时存在令人烦恼的问题gettext
,它会缓存.mo
文件直到服务器重新启动。在使用时我没有遇到过这个问题lighttpd
。