你知道为什么要使用Apache而不是Nginx吗?

43

有没有任何理由使用Apache而不是Nginx?我的意思是针对一个“全新项目”,没有任何遗留代码或配置。

更新:

使用Apache最常见的原因包括:

  • 我们有自己的重写配置
  • 我们有自己的应用程序,在Apache上运行

..这对于旧应用程序来说还可以。但对于完全“新应用程序2013”呢?

你怎么想?

顺便说一下,我知道以下主题:

..但我找不到任何支持Apache的专业人士。你能指点我吗?


您能否将您的问题更具体化?通常不鼓励这种类型的问题。请参阅SO FAQ以了解可接受的问题详细信息:http://stackoverflow.com/faq#questions - slm
这个问题非常普遍,而且本质上是深层次的理论问题。你能更具体一些吗?看起来你知道一些优缺点。是吗? - Sergei O. Udalov
阅读常见问题解答,其他人对你的问题进行了反对投票(不是我),这证实了另一个人同意我的评论。如果你在谷歌上搜索“Apache vs. Nginx”,你可以找到答案,并使用SO来提问更细节的问题。这确实是SO的目的。 - slm
2
我已经转向使用 nginx,并且不会回头了。可靠性、速度、直观的配置等等... - Déjà vu
nginx的设计目标之一就是改善配置的扩展性。许多apache配置指令是位置相关的;随着它的增长,维护变得更加困难。如果尝试逐行将apache配置翻译到nginx中,nginx也会遇到同样的问题。可以通过使用作者Igor Sysoev在这里描述的一些nginx技巧来解决这个扩展性问题。 - Cole Tierney
显示剩余2条评论
6个回答

28

Apache是互联网上最受欢迎的Web服务器,估计它为现有所有网站提供了约55%的服务,而Nginx仅占12%(于2013年1月)。

更新(2015年4月):Apache仍然拥有约40%的市场份额,而Nginx已经增长到15%。查看上面提到的链接以获取最新数据。

更新(2020年7月):Nginx在37%与25%的流行度上轻松超过Apache。Apache在搜索中仍然有更多点击量。

它是最古老的Web服务器,这意味着您不会遇到任何难度在配置方面找到技术专家。

您还可以在搜索Web时稍微更容易找到帮助。SO有大约80,000个Apache标签和约40,000个Nginx标签。

安装文档有时会假定您正在使用Apache,通常包括.htaccess文档,但没有相应的Nginx配置:

  • Drupal设置页面有Apache和IIS的注意事项,但只在评论中提到了nginx,并且至少有一个人遇到了无法使nginx设置生效的问题。
  • 我的建议是?这两种选择都是完全可以的,如果你找不到任何具有说服力的理由,就抛硬币吧。


    10
    我对你声称“易用性和维护”不是技术原因的说法持有异议。 - Gustav Bertram
    3
    说实话,如果你想尝试使用nginx,可以在下一个正在构建的小项目中试用它。对于大型项目而言,通常情况下你会希望坚持使用已经熟悉和了解的技术 - 你不需要再学习一种全新的技术增加负担。 - Gustav Bertram
    2
    据我所知,nginx没有任何关键功能缺失。 - Gustav Bertram
    你在这里提到的“标准安装文档”是指哪些文件? - user636044
    我看过许多基于Web的系统安装文档,其中涵盖了Apache设置。CodeIgniter、Yii、Drupal、WordPress、PHP等。 - Gustav Bertram
    显示剩余7条评论

    13

    这里是2018年的回应。

    Apache的市场份额为47.4%(比去年下降了3.3%),而Nginx的市场份额为36.8%(比去年增加了4.4%)。

    趋势是线性的,如果没有什么变化,在2020年时Nginx将成为最常用的Web服务器。

    Nginx是为支持大量并发请求而设计的,现代应用程序通常会进行许多小型Ajax请求和较少的完整页面加载。

    我看过基准测试(针对静态资源),Nginx在每秒请求数和RAM使用方面都超越了Apache。

    我一个小时前意识到了这一点,我已经使用Apache很多年了,但在撰写此文章后就开始迁移到Nginx。

    2018年的结论:选择Nginx。

    基准测试:dreamhost Web-server-performance-comparison

    分享:w3techs.com web_server

    分享2:netcraft.com web-server-survey


    1
    这个话题有些跑题,但是“到2020年如果没有什么意外发生”的说法感觉像是一记回旋踢。 - Chaos
    @Chaos 哈哈,抱歉我的母语不是英语,你会如何表达呢?“如果没有发生任何事情,到2020年”? - Vixxs
    哦,你的英语很好(是的,或许加个逗号会更好,但我甚至没有注意到)。我说的是我因为2020年疫情而患上了创伤后应激障碍。 - Chaos

    9

    实际上,没有任何客观的理由选择Apache而不是Nginx。

    事实上,Nginx可能在性能方面更加优越,具体信息可以参考性能比较。然而,这些原因通常对于整个网站应用的影响并不重要。

    你会发现很多主观的原因来支持人们偏好于一种Web服务器而非另一种,例如出于熟悉感的心理偏见。在涉及到Web服务器方面,这种偏见可能与用户的年龄有关,因为Apache诞生的时间更早。对于许多用户而言,学习一种新系统不是一个有效的时间利用方式。对于经验不足或新管理员来说,熟悉度偏见不适用。

    另一个主观原因是错误地认为更大的市场份额总会产生明显更高水平的支持。这种想法未能意识到在极端接受点过后,更大市场份额的相对重要性日益衰减。例如,最近的Netcraft调查显示,Nginx占据了14.42%的市场份额,而Apache则有37.45%。虽然人们可能盲目认为Apache由于其更高的市场份额会拥有更出色的支持,但事实上14.42%代表着1亿4833万1190个网站和用户在使用Nginx,这是一个极其庞大的数字。Nginx的用户数量如此之多,以至于其相对较小的市场份额对支持水平几乎没有任何明显影响。


    7

    对于那些想要了解主要差异/比较的人:

    输入图像描述


    3
    我可以对第一个回答进行补充。Apache的市场份额统计是正确的,但您可以更详细地考虑这个问题。NGINX在前1000个网站和前1万个网站中占据最大份额,并且在前10万个网站中处于势均力敌的地位。http://w3techs.com/technologies/cross/web_server/ranking因此,确定您的网站预期使用哪个档次,并使用该信息查找最相关的市场份额信息。
    要了解有关NGINX的更多信息,即将推出“官方”O'Reilly图书。这里可以免费下载预览:http://www.aosabook.org/en/nginx.html

    -1

    Apache的mod_php更加稳定和清洁,而Nginx经常会出现HTTP Bad Gateway错误,代码为502。


    7
    在我看来,将PHP嵌入到网页中不太"干净"。它之所以如此流行,仅仅是因为它允许网络主机在单个服务器上托管数千个网站。你遇到的5xx错误可能是由于配置不当造成的,而不是Nginx的限制所致。 - user636044
    nginx和php有什么共同点呢?它只是将您引导到提供php服务的流程...既然有支持多线程的php-fpm,为什么还需要mod_php呢?我的意思是,您可以忽略一些具有非常灵活用途的产品,例如php-fpm、nginx等,并坚持使用过时的解决方案吗? - holms

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