Nginx vs Apache作为反向代理,哪一个可以select

这个问题可能已经在这里问过了,但我找不到与我的问题完全相符的问题。 听说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” – 这是一个更艰难的呼吁!