这个问题可能已经在这里问过了,但我找不到与我的问题完全相符的问题。 听说nginx的性能是相当不错的,但Apache有更多的文档,社区(阅读:专家)来获得帮助
现在我想知道的是,Web服务器如何在性能,configuration的简单性,定制化水平等方面进行比较。 作为反向代理服务器在vps环境??
我仍然在一个ruby web应用程序(而不是ROR)与瘦(rubyWeb服务器之一)之间的权衡。
具体答案将不胜感激。 没有触及ruby部分的一般答案是可以的。 我仍然在networking服务器pipe理noob。
因为我同意webdestroyas答案的最重要的一点,所以我想写一个评论,但是它有点太长了。
你处于VPS环境,这意味着你很可能会在RAM上低。 仅仅因为这个原因,你会希望Nginx的内存占用比Apaches小。
我也不同意一些提到的论点。
configuration简单:
Nginx并不比Apache更难。 这不一样。 如果你习惯了Apache,那么改变总是比较困难,这并不意味着configuration风格本身就更难。 一年前,我完全从Apache迁移到了Nginx,今天我很难configurationApache服务器,而我发现Nginx非常容易configuration。
对于Ruby:
Nginx有Passenger,但是我通常把它看作是连接到Ruby的劣质方法。 我不是一个Ruby程序员,所以我不能validation这一点,但我经常把Unicorn和Thin看作是更好的select。
结论是:
Nginx被做成了一个反向代理。 最初,它所做的只是通过HTTP / 1.0向后端服务器提供静态文件和反向代理。 自那时以来,fastcgi,负载平衡和其他各种function已被添加,但最初的devise目的是为静态文件和反向代理服务。 这真的很好。
相反,Apache是一个通用的Web服务器。 我毫不怀疑它可以完全反转代理,但是它并没有devise成具有最小的内存占用,因此它需要比Nginx更多的资源,这意味着我的初始VPS环境参数发挥作用。
性能:
Nginx的。 这台服务器被认为是性能最好的networking服务器之一,被许多不同的公司使用(值得注意的是,MediaTemple)
configuration简单:
Apache的。 Apache的configuration非常简单,function非常强大。 Nginx是强大的,但可以很难理解,因为它看起来更像是一种编程语言而不是一个configuration文件。
自定义级别:
Apache的。 Apache有很多mods和其他插件为它编写。 虽然Nginx仍然有插件,但我认为Apache比Nginx多得多。
对于Ruby:
我知道Nginx可以用作Mongrel / webrick的一个强大的负载平衡器。 但是,Apache有Phusion / Passenger,这使整合更好。
反向代理优胜者:
Nginx的
Nginx是基于事件的,而apache是基于进程的。 在高负载下,这使得世界上的所有差异… Apache必须为每个连接分叉或启动一个新的线程,而nginx不。 这种差异主要performance在内存使用情况中,也performance在用户响应时间和其他性能指标上。 Nginx可以在现代硬件上处理成千上万个 HTTP Keepalive连接。 Apache将为每个连接使用1-2 MB的堆栈,所以在math上看,只能同时处理几百个或千个连接,而不能同时进行交换。
在我们的环境中,我们在Apache和IIS前面使用nginx作为负载平衡和caching代理,并且不能更快乐。 我们使用两个小型nginx盒代替一对非常昂贵的租赁F5设备,我们的网站在感觉和测量响应时间上都快得多。
大约两周前我和你一样处于困境。
给你一个非常简洁的答案:从我的研究nginx是非常快速和资源友好,但它只是concieved反向代理静态文件。 剩下的就是你必须configuration的解决scheme或者脚本。
AFAIK nginx没有htaccess文件,所以你必须find你的方式,如果取决于该function。
AFAIK一切需要的作品,我见过的教程。
我将与我的testing和分析设置与nginx。 我有一个典型的LAMP应用程序。
我读过,有些人反向代理服务器,并提供来自nginx的静态文件,并将所有其他的东西像PHP一样传递给正在运行的Apache实例。 他们声称一个好的权衡。 我没有关于这方面的性能数据,但您可能想知道。
在过去的几年中,我在各种不同环境下的Apache mod_proxy上遇到了严重的问题。 有时,它会停止工作,唯一的办法似乎是重新启动Apache服务器。
就个人而言,我不会问“nginx vs Apache”,而是“nginx vs lighttpd” – 这是一个更艰难的呼吁!