请问 nginx 比 apache 性能高为什么 apache 现在依然流行? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cc959798
V2EX    NGINX

请问 nginx 比 apache 性能高为什么 apache 现在依然流行?

  •  
  •   cc959798 2016-06-08 09:51:04 +08:00 20248 次点击
    这是一个创建于 3468 天前的主题,其中的信息可能已经有所发展或是发生改变。
    89 条回复    2019-12-24 06:07:43 +08:00
    herozhang
        1
    herozhang  
       2016-06-08 09:55:34 +08:00
    因为大多数网站没啥流量压力
    7654
        2
    7654  
       2016-06-08 09:58:02 +08:00
    一般动态请求要 apache 去做, nginx 静态和反代
    分工不同,没有孰优孰劣
    clino
        3
    clino  
       2016-06-08 09:59:16 +08:00
    apache 可以直接当应用服务器,nginx 可不行,所以有时候 apache 比较方便
    另外在直接静态文件 serve 的时候,nginx 的 index 页面对于长文件显示不全,而且这个貌似没法解决,所以有时候我们会因为这个去用 apache
    xuwenmang
        4
    xuwenmang  
       2016-06-08 10:00:59 +08:00
    百度: nginx vs apache

    你希望我复制几条
    BOYPT
        5
    BOYPT  
       2016-06-08 10:07:00 +08:00
    nginx vs apache 功能和角色上都不在同一个级别,没可比性。
    倒是 nginx vs lighthttpd 后者基本没什么优势但是还是有一定用户群。
    kungfuchicken
        6
    kungfuchicken  
       2016-06-08 10:14:14 +08:00
    因为大多数网站对性能没有那么的敏感, Apache 足够用而且很多功能比 Nginx 还方便
    huobazi
        7
    huobazi  
       2016-06-08 10:15:47 +08:00
    有了 某宝 为啥 还要有 某东
    est
        8
    est  
       2016-06-08 10:16:00 +08:00
    原因是网上各种教程都是基于 10 年前的 apache 的。
    nginx 配置好多也是抄袭得不完整。
    cashew
        9
    cashew  
       2016-06-08 10:20:34 +08:00
    Nginx 在处理静态页面上比 Apache 有优势。
    Nginx 的设计初衷是提供一种快速高效多并发的 web 服务。
    hp3325
        10
    hp3325  
       2016-06-08 10:29:37 +08:00 via Android
    大而全与小而精的区别,具体需要用哪个看需求,就像原来 IIS 也有市场不是。
    tinkerer
        11
    tinkerer  
       2016-06-08 10:31:54 +08:00 via Android
    比如 webdav 服务, apache 上很容易就搞定了
    wujunze
        12
    wujunze  
       2016-06-08 10:34:26 +08:00
    不同业务场景选择不同的 websever 呗 这个没有什么好纠结的
    fcicq
        13
    fcicq  
       2016-06-08 10:49:27 +08:00
    哪怕真的全面碾压了也会有大量的历史遗留. 而碾压本来就不存在, 特别是功能上.
    tigren
        14
    tigren  
       2016-06-08 10:56:27 +08:00   1
    抬头一看发现是 PHP 节点,于是就不好意思发表意见了
    shiny
        15
    shiny  
    PRO
       2016-06-08 10:56:28 +08:00 via iPhone
    那是实验环境下的性能高,你跑真实生产环境,决定性能的基本都不是 web server
    dangyuluo
        16
    dangyuluo  
       2016-06-08 10:56:52 +08:00 via iPhone
    这是一个多元的世界
    shiny
        17
    shiny  
    PRO
       2016-06-08 11:02:27 +08:00 via iPhone
    有常识云:离开剂量谈毒性都是耍流氓。
    同样,离开 profiling 谈性能也是耍流氓。
    zaishanfeng
        18
    zaishanfeng  
       2016-06-08 11:10:08 +08:00 via Android
    有了 git 还要 svn 干什么
    zhicheng
        19
    zhicheng  
       2016-06-08 11:18:54 +08:00   6
    为什么有了更好看的 OS X 还有人用 W indows 。
    为什么有了更开放的 Linux 还有人用 OS X 。
    为什么有了垃圾回收的 Java 还有人用 C++ 。
    为什么有了性能更好的 Golang 还有人用 Java 。

    为什么有了 Pepsi 还有人喝 Coca Cola 。
    为什么有了 Nike 还有人穿 Adidas 。

    为什么有了猫咪还有人养狗狗 。

    不能再举例了。

    你想用 nginx 就去用,不用找一万个理由来说服自己。多研究些问题,少谈些主义。
    slixurd
        20
    slixurd  
       2016-06-08 11:20:18 +08:00
    “为什么有了 Pepsi 还有人喝 Coca Cola 。 ”
    因为现在 Pepsi 越来越甜了,甜的无法忍了....
    ila
        21
    ila  
       2016-06-08 11:23:58 +08:00 via Android
    @shiny └(^O^)┘红红火火恍恍惚惚
    vic2012
        22
    vic2012  
       2016-06-08 11:32:43 +08:00 via iPhone
    为什么我觉得新的 apache 比 nginx 配置起来顺手的多……
    a2ensite a2enmod 逻辑及其清晰 配置文件也非常清晰
    ericls
        23
    ericls  
       2016-06-08 11:36:36 +08:00 via iPhone
    我不知道为什么有人说 nginx 可以跑 PHP
    ericls
        24
    ericls  
       2016-06-08 11:37:30 +08:00 via iPhone
    @zhicheng 因为 Pepsi 垃圾
    Jaylee
        25
    Jaylee  
       2016-06-08 11:40:30 +08:00
    @clino 长文件显示不全? 感觉你在搞笑
    holyghost
        26
    holyghost  
       2016-06-08 11:40:47 +08:00
    @zhicheng 百事根本不配在可乐界混。
    cc7756789
        27
    cc7756789  
       2016-06-08 11:41:52 +08:00
    nginx 是处理静态内容的
    jugelizi
        28
    jugelizi  
       2016-06-08 11:44:10 +08:00
    @tigren 哈哈 php 和 python 节点下的提问简直惨不忍睹
    现在的“程序员”都不会搜索了
    cc959798
        29
    cc959798  
    OP
       2016-06-08 13:00:27 +08:00
    @zhicheng 我没谈什么主义啊,感觉在 PHP 节点下提问题好奇怪啊,大多都带着火药味,不感兴趣的话完全可以不回答啊
    cc959798
        30
    cc959798  
    OP
       2016-06-08 13:01:27 +08:00
    @jugelizi 我也感觉 PHP 节点很怪,要不是嘲讽要不是喷,没几个正经的
    Andy1999
        31
    Andy1999  
       2016-06-08 13:09:31 +08:00 via iPhone
    @ericls 不可以 用的是 unixsocks 传递给 php-fpm 处理 然后把数据拿过来展现
    fengyqf
        32
    fengyqf  
       2016-06-08 13:10:30 +08:00
    节点被玩坏了。。。。
    话说回来, apache httpd 的功能那一个全面啊,几乎可以干任何事情!而 nginx ,除了速度快效率高之外,就真没什么了,当然正是这一点,让他有了目前的地位。
    mengzhuo
        33
    mengzhuo  
       2016-06-08 13:23:24 +08:00 via iPhone
    说 nginx 动态不行的用过 lua 么
    msg7086
        34
    msg7086  
       2016-06-08 13:24:59 +08:00
    @vic2012 不妨试试新的 nginx 配置环境?

    @fengyqf OpenResty 也是可以一战的。
    clino
        35
    clino  
       2016-06-08 13:45:37 +08:00 via Android
    @Jaylee 难道不是吗? 我也想别人证明这是搞笑啊
    ericls
        36
    ericls  
       2016-06-08 13:47:36 +08:00 via iPhone
    @Andy1999 我也是这么想的
    jokie
        37
    jokie  
       2016-06-08 13:48:11 +08:00
    因为懒
    zkaip
        38
    zkaip  
       2016-06-08 14:09:00 +08:00
    Apache 大而全, nginx 小而快, 不谈场景谈应用都是扯淡...
    zhicheng
        39
    zhicheng  
       2016-06-08 14:25:34 +08:00
    @cc959798 你闻到火药味是因为你的问题根本就是带有偏见的,你只是想找到同意你观点的人,而不是寻找问题的答案。
    richzhu
        40
    richzhu  
       2016-06-08 14:27:06 +08:00
    多研究些问题,少谈些主义。
    fcicq
        41
    fcicq  
       2016-06-08 14:27:35 +08:00
    @msg7086 你会给旧应用做移植吗? 移植后的好处很多能赚回开发成本吗? 事实是成品有了就懒得再动手了.
    msg7086
        42
    msg7086  
       2016-06-08 14:33:00 +08:00 via Android
    @fcicq 然而和我说的并没有关系。
    我说的是功能,你说得是资历。
    ccming
        43
    ccming  
       2016-06-08 14:43:47 +08:00
    试着去 stackoverflow 问一下这种问题
    fcicq
        44
    fcicq  
       2016-06-08 14:44:14 +08:00
    @msg7086 资历很重要啊, 有多少不好的东西因为沉没成本早就投下去了, 所以根本换不掉, apache 还没有差到那个地步.

    这里的经济帐不能单纯从技术上算. 经验中, 新系统的设计和实现(或者是成本等重要的因素)必须比旧的好 10 倍以上, 才能用一种有损兼容性的方法去更新. 如果旧系统有若干种能够维持兼容性的提升方法肯定会优先采用, 比如硬件升级, 虚拟化等等都能给旧系统延命, 延命后的系统也很难找到优秀 10x 以上的替代品.
    cc959798
        45
    cc959798  
    OP
       2016-06-08 15:08:38 +08:00
    @zhicheng 如果我的表达让你感到偏见了,我深表歉意。但是我真的不是我为了找什么认同观点的人(我问题里有观点吗?),如果你觉得我在引战,你完全可以无视我的存在。最近由于工作需要刚开始做 PHP ,对于我无知还请原谅。但请不要带着偏见看待。我对 ve2x 不是熟悉(至少不常上),不知道 PHP 节点为什么会这样,所以请注意你的措辞。
    cc959798
        46
    cc959798  
    OP
       2016-06-08 15:09:09 +08:00
    @ccming 英语水平有限,为什么不能再这问?
    lhbc
        47
    lhbc  
       2016-06-08 15:36:27 +08:00   1
    1. 不是所有公司的运维都懂 nginx, 尤其是中小型企业,或者说,相当一部分公司根本就没专职运维。能照着手册或者文档让 Apache 跑起来已经不容易了
    2. 99%的网站(按数量算), Apache 和 nginx 的性能差距实际影响大约为 0 ,因为 PV 根本就没几个
    3. Windows 下, Apache 比 nginx 好很多
    zhouzhe8013
        48
    zhouzhe8013  
       2016-06-08 15:52:20 +08:00
    够用,简单,在各种老版本的 linux 发布版基本都有 httpd 直接包管理安装,而不像 nginx 需要编译安装.
    breeswish
        49
    breeswish  
       2016-06-08 15:53:25 +08:00
    因为性能和流行程度没关系啊
    cheng007
        50
    cheng007  
       2016-06-08 15:56:20 +08:00
    @clino 你应该学一下 nginx 怎么用了。
    yeyeye
        51
    yeyeye  
       2016-06-08 16:31:25 +08:00
    @lhbc 让我想起了一句话 不是所有运维都懂 Apache 于是 IIS 风生水起
    kn007
        span class="no">52
    kn007  
       2016-06-08 16:35:01 +08:00 via Android
    因为 apache 配置简单?
    反正我用 nginx
    strahe
        53
    strahe  
       2016-06-08 16:37:10 +08:00
    因为中小站长多,因为中小站长写 php 的也多,
    qhxin
        54
    qhxin  
       2016-06-08 16:40:00 +08:00
    稳。线程安全。
    Jaylee
        55
    Jaylee  
       2016-06-08 16:55:03 +08:00
    @clino 别在网上乱找野鸡教程
    TangMonk
        56
    TangMonk  
       2016-06-08 17:14:44 +08:00 via Android
    不知道可不可以这样类推,真正有价值的东西都被少数人了解或拥有。
    clino
        57
    clino  
       2016-06-08 17:24:17 +08:00
    @cheng007
    @Jaylee
    http://www.rbrussell.com/2014/12/10/nginx-display-full-filename-directory-listing/
    这个问题要改 nginx 代码的,想我从来都是 apt-get 安装的不想去这么折腾
    clino
        58
    clino  
       2016-06-08 17:25:08 +08:00
    Jaylee
        59
    Jaylee  
       2016-06-08 17:29:20 +08:00
    @clino 。。。醉了。。你开心就好
    clino
        60
    clino  
       2016-06-08 17:46:08 +08:00
    @Jaylee 碰到这种问题我为什么要开心呢?
    MikuM97
        61
    MikuM97  
       2016-06-08 17:47:35 +08:00
    总之,有人找我推荐,我的原则就是:先参考你要跑的程序的兼容性。
    其次,对于像我自己博客那种一天几个 pv 的情况,随意选择,喜欢哪个用哪个。
    如果你的站流量较大, nginx 。
    初学者,兼容性 ok 的情况下,还是建议试试 nginx ,毕竟配置比较简单,而且是未来的趋势。
    codespots
        62
    codespots  
       2016-06-08 18:11:51 +08:00
    @shiny 看到星形头像想到是你,点开资料看到网址确认是你,打开网址,怀疑不是你,百度觅茶集,然后对比域名才发现一个 https 一个 http ,你微博好久没更新了
    leeloto
        63
    leeloto  
       2016-06-08 18:53:29 +08:00 via iPhone
    @TangMonk 正好相反,当你觉得是好东西的时候别人早就发现了
    Jerry5850022
        64
    Jerry5850022  
       2016-06-08 19:02:56 +08:00
    你觉得,一个日 PV 不过十的小博客需要用 nginx 吗?

    能照着 Apache 的手册把服务器配好我都觉得我很牛逼了!
    shiny
        65
    shiny  
    PRO
       2016-06-08 20:23:50 +08:00
    @westooy 原来我都这么高调引起过路人注意了?阿里 ACE 倒闭了,所以 SSL 去掉了。
    BlueFly
        66
    BlueFly  
       2016-06-08 22:32:56 +08:00   1
    好多人说漏一点,其实 Apache 与 Nginx 在实用性方面最大的区别是伪静态(url rewrite)的支持, Apache 在根目录放个.htaccess 就好了,而且这个.htaccess 还都是各个程序自带和标配的,而 nginx 需要修改 .conf 并且还不一定自带,还需要自己从.htaccess 转换格式。
    光这一点上,起码在虚拟主机市场这块, Nginx 就无法占有。
    msg7086
        67
    msg7086  
       2016-06-08 23:13:16 +08:00
    @fcicq 233 所以我根本没说这个啊。
    msg7086
        68
    msg7086  
       2016-06-08 23:14:34 +08:00
    @BlueFly 这不是伪静态支持,而是动态配置文件支持。
    好处是灵活,坏处是需要不停扫描磁盘搜索.htaccess (因为有继承所以目录深的时候会大大影响效率)。
    elonsz
        69
    elonsz  
       2016-06-08 23:16:30 +08:00
    https://ooo.0o0.ooo/2016/06/08/57583899d6e66.jpg
    https://ooo.0o0.ooo/2016/06/08/5758389aa4fbc.jpg
    orFish
        70
    orFish  
       2016-06-08 23:23:07 +08:00
    nginx 处理静态文件有优势
    但是处理 php 并不比 Apache 好
    Perry
        71
    Perry  
       2016-06-08 23:45:05 +08:00
    po 主的 13 个帖子全是问题
    BlueFly
        72
    BlueFly  
       2016-06-08 23:49:31 +08:00
    @msg7086 嗯,说得不好。 不过这个方便性在虚拟主机里,无法替代啊,那个虚拟主机服务商能接受不单要手工加入 .conf 还得每次重启一次 Nginx 的事情,光重启 Nginx 就得让其他用户骂死了。 而虚拟主机份额又不少,就算不用 Apache 也得选择完全兼容 .htaccess 的,绝不会选择 Nginx 的
    Narcissu5
        73
    Narcissu5  
       2016-06-09 00:05:32 +08:00
    楼上有些怕是弄混了 apache httpd 和 apache tomcat , httpd 并没有渲染动态内容的能力
    skydiver
        74
    skydiver  
       2016-06-09 00:06:35 +08:00
    @BlueFly nginx -s reload apache 都能从容重启, nginx 怎么就不能呢
    BlueFly
        75
    BlueFly  
       2016-06-09 00:12:22 +08:00
    @skydiver 为什么你不想想虚拟主机的应用场景? 一台主机就一个用户? 不客气的说,上百个用户的不同网站在跑,某个用户的网站也许正在做交易,你服务器莫名其妙重启一次 Nginx ,这影响怎么算?
    billlee
        76
    billlee  
       2016-06-09 00:58:54 +08:00
    @Narcissu5 apache httpd 可以通过 mod_php 在同一个进程内运行 php 代码.
    xierch
        77
    xierch  
       2016-06-09 01:19:00 +08:00
    SoloCompany
        78
    SoloCompany  
       2016-06-09 01:35:34 +08:00   2
    nginx 定位是 http 协议服务器而不是 web 服务器
    因为架构不允许阻塞,所以开发上层服务会很困难,一般更多是是用做反代 /静态资源服务 /缓存
    nginx 还可以反代 http 以外的协议,比如 smtp / pop3 / imap

    而 apache 则是 http 和 web 服务器的整体,由于允许阻塞,可以直接支持 cgi ,开发上层服务自然是很容易, php 就是个典型

    这两者其实并没有太大的可比性
    julor
        79
    julor  
       2016-06-09 07:46:52 +08:00 via Android
    楼主,别人老婆比你的漂亮,你怎么不去娶别人老婆!合适才是最重要!
    cc959798
        80
    cc959798  
    OP
       2016-06-09 09:34:13 +08:00
    @Perry 不行吗
    elonsz
        81
    elonsz  
       2016-06-09 10:18:18 +08:00
    div class="reply_content">@xierch
    https://ooo.0o0.ooo/2016/06/08/5758d3c7306f0.jpg
    https://ooo.0o0.ooo/2016/06/08/5758d3c730408.jpg
    ryd994
        82
    ryd994  
       2016-06-09 12:41:05 +08:00
    @BlueFly
    @skydiver
    nginx 确实是可以 reload 的,因为端口由 master 进程监听然后传递给 worker ,所以 reload 的时候是:
    1. 用新配置启动新 worker
    2. 确认新 worker 存活之后停止给旧 worker 派发请求
    3. 等旧 worker 完成所有请求,退出
    这样新旧交接是理论上无缝的

    但是,这并不意味这 nginx 就可以用在虚拟主机里。别的不说,如果有个用户往自己的配置里加点料,谁都 reload 不了。虽然 reload 可以保证新 worker 的活的,但不能保证新 worker 配置合理。 htaccess 的优势就在于就算用户煞笔,不至于影响别人。
    BlueFly
        83
    BlueFly  
       2016-06-09 14:50:50 +08:00
    @ryd994 因为我一直是用 restart 而不是 reload 重置 Nginx ,可能这里理解有出入了。不过我的原意是明确,在虚拟主机市场上, Nginx 从来都不是选项,主机商就算不选用 Apache 也一定会选用能兼容 .htaccess 的。而对于市场份额占有来说,主机商选择与否是非常明显的。 Nginx 无法进入虚拟主机市场,份额可想而知。
    .htaccess 好处就是傻瓜化自动化,.conf 修改需要一定权限,还需要检验,人肉成本也会增加。无法外包给客服公司去做,这对于像美帝这样硬件成本不值钱,人工成本高的国家是非常要命的。
    codespots
        84
    codespots  
       2016-06-16 20:03:19 +08:00
    @shiny 因为看过你写的短网址那篇文章,就关注你的微博和网站了。
    vic2012
        85
    vic2012  
       2016-06-18 19:54:39 +08:00
    @msg7086 新的配置环境是指?
    shanechiu
        86
    shanechiu  
       2017-12-05 08:33:00 +08:00 via Android
    虽然我觉得有些回答很搞笑。这第一个 open topic?总能看到一些人说 Apache 动态处理比 nginx 好,给我个解释或者链接啊!我是个 new fish 啊!这里有很多 new fish 啊。抱歉,抱怨太多。我附上我找到的链接,https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations
    kaohaonan6666
        87
    kaohaonan6666  
       2018-11-21 16:34:15 +08:00
    apache 是先驱者,占领的市场份额是最高的,一些老项目所占比重较大, 但现在最新的高并发高流量项目的 技术选型的趋势一定是 nginx !
    autogen
        88
    autogen  
       2019-12-24 06:00:20 +08:00
    由于 php-fpm 内存泄漏和崩溃的问题,php 还是搭配 apache 更加稳定,而且网上的 php 入门教程也是 apache+php 的多


    java、c++、node、go、python 现在一般都搭配 nginx 了


    -
    autogen
        89
    autogen  
       2019-12-24 06:07:42 +08:00
    不过 V 站有多少人用 nginx + c 语言写的 so 来开发网站?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     945 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 23:12 PVG 07:12 LAX 15:12 JFK 18:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86