kn007
V2EX  ›  问与答

究竟是 Apache 还是 Nginx?

  •  1
     
  •   kn007 · Jul 5, 2015 · 8981 views
    This topic created in 4150 days ago, the information mentioned may be changed or developed.

    看到类似问题,v2已经有段时间没谈了,不同时间,想法应该不尽相同,开个贴问问。

    目前自用着CentOS 6.6 x64,主要配置了Nginx、MySQL、PHP,次要的有Varnish、Redis、Memcache等杂七杂八的。

    习惯了lnmp,虽说早期也是用着lamp,但现在对A的规则,基本忘却。。。

    我想问问大家在lnmp和lamp中会选择哪者?

    也欢迎补充诸如lnmpa等类型,希望能顺带写上你选择的原因。

    最近有朋友跟我说帅的人早就开始用Apache,还有原先用Nginx的又回到Apache。有点不解。

    个人选择lnmp的原因是,觉得Nginx比较快、处理能力强、占用低、功能性强(反代什么的)。

    68 replies  •  2015-07-10 13:34:15 +08:00
    aalska
    aalska
    Jul 5, 2015❤️2
    1
    帅的人用nginx
    geekzu
    geekzu
    Jul 5, 2015 via Android
    2
    ltampv 2333
    aszxqw
    aszxqw
    Jul 5, 2015
    3
    @aalska 哈哈哈
    kn007
    kn007
    OP
    Jul 5, 2015
    4
    @aalska 哈哈哈哈,好吧。
    其实Apache处理php应该还是快点,不过并发不多,我觉得Nginx足够胜任了
    kn007
    kn007
    OP
    Jul 5, 2015
    5
    @geekzu linux tengine apache mysql(mariadb mongodb) php varnish?
    geeglo
    geeglo
    Jul 5, 2015
    6
    nginx
    zonghua
    zonghua
    Jul 5, 2015 via iPhone
    7
    502 bad gate
    kn007
    kn007
    OP
    Jul 5, 2015
    8
    @zonghua 想说nginx 502?起码在我手上,这种情况只在最近发生过一次(3年多来)
    geekzu
    geekzu
    Jul 5, 2015 via Android
    9
    @kn007 √
    sumhat
    sumhat
    Jul 5, 2015
    10
    个人博客体现不出两者的差距,Apache 的生态环境要比 Nginx 好一点,在主机不差钱的情况下 Apache 没什么劣势。
    mantouge
    mantouge
    Jul 5, 2015
    11
    颜值高的人用nginx!呵呵
    kn007
    kn007
    OP
    Jul 5, 2015
    12
    @sumhat 或许你可以深入讲一下?
    zonghua
    zonghua
    Jul 5, 2015 via iPhone
    13
    @kn007 反正我看到的502都是nginx
    Hello1995
    Hello1995
    Jul 5, 2015 via Android
    14
    LANMP...
    Felldeadbird
    Felldeadbird
    Jul 5, 2015❤️1
    15
    没有遇到需求瓶颈的话,apache和nginx完全体验不出区别。只有项目到了访问出问题,性能问题,需求满足不了才知道选apache还是nginx。
    我要减肥,但是还没开始我就觉得要节食很痛苦。那我还是不减肥好了。
    kn007
    kn007
    OP
    Jul 5, 2015
    16
    @Felldeadbird 嗯,有道理
    pubby
    pubby
    Jul 5, 2015
    17
    即使用apache,也建议你前面放一个nginx。要不然,大量网速慢的客户端都能拖死你apache
    sinxccc
    sinxccc
    Jul 5, 2015
    18
    反正我觉得我那些放几张网页放个 blog 的网站用什么都没差…
    kn007
    kn007
    OP
    Jul 6, 2015
    19
    @pubby 也就是lnmpa
    kn007
    kn007
    OP
    Jul 6, 2015
    20
    或许还可以加个问题,现有lnmp,有无必要lnmpa
    RAKE
    RAKE
    Jul 6, 2015
    21
    PHP7就要来了,届时Nginx的fpm性能不会比Apache差(而且现在也还有hhvm)。

    选Apache最大的好处就是灵活,so可以随便载入,而Nginx就必修更新二进制文件。

    好像差距越来越小了。。
    49
    49
    Jul 6, 2015 via Android
    22
    我觉得Apache配置略繁琐。。。
    PS:这下完美了,我在pac里加入了日夜的判断,白天直连HK,夜间CN2中转,
    新的pac只需要把老地址的pac改成auto
    orvice
    orvice
    Jul 6, 2015
    23
    看情况啦,处理php apache会比较强,静态文件nginx比较快。
    apache也比较稳定些,像我们这种小小,用nginx经常502什么的。。。
    LINAICAI
    LINAICAI
    Jul 6, 2015
    24
    反正我看到502 的都是nginx+1
    maskerTUI
    maskerTUI
    Jul 6, 2015
    25
    lanmp也可以呀,尤其是在访问大的时候比较好
    loveminds
    loveminds
    Jul 6, 2015
    26
    自己改的nginx,基于openresty
    nlzy
    nlzy
    Jul 6, 2015 via iPhone
    27
    @zonghua 反正我看过的 Apache 的 50X 直接就爆路径出来了(某几个游戏论坛)

    @RAKE PHP7 已经有 Alpha2 了,我的个人博客已经用上了,性能确实比 PHP5 好很多。想要灵活可以用 tengine 啊
    laogui
    laogui
    Jul 6, 2015 via Android
    28
    用apache十几年了,带有深厚的感情,对于普通的几万ip的网站二者差距不大,nginx处理静态文件有优势,apache 2.4后二者的差距在不断缩小,apache+varnish很好的搭配。
    msg7086
    msg7086
    Jul 6, 2015
    29
    如果你内存特别大的话就用apache,否则慎用。
    我的意思是如果你有4G以上内存的话。如果只有256M那就别尝试了。
    kn007
    kn007
    OP
    Jul 6, 2015
    30
    @RAKE 这是我爱听的。
    @49 哦,好。你不是说你转战apache么,话说你不觉得昨天一直掉线抽风么?
    @orvice 从来没502过。。。
    @LINAICAI 我看到整台服务器瘫痪的,都是APACHE
    @loveminds 章哥的组件很好!
    @nlzy tengine灵活?此话怎讲?求教下。
    @laogui 我目前是nginx+varnish。。。。
    @msg7086 其实我是4G3核的VPS。。。
    kn007
    kn007
    OP
    Jul 6, 2015
    31
    @nlzy 是我没仔细看,灵活是想说可以动态加载模块是吧。
    msg7086
    msg7086
    Jul 6, 2015
    32
    @kn007 那并无所谓了。
    当然如果要考虑到将来的发展的话,nginx是少不了了。
    至于后端的话apache也好fcgi也好应该差不多。
    kn007
    kn007
    OP
    Jul 6, 2015
    33
    @msg7086 如果差不多,那我就还是保持着Nginx with FPM-FCGI。。。
    elvba
    elvba
    Jul 6, 2015
    34
    当使用 PHP 作为 Apache 模块时,也可以用 Apache 的配置文件(例如 httpd.conf)和 .htaccess 文件中的指令来修改 PHP 的配置设定

    举个例子,在线上肯定不能去随便重启 apache,但是碰到了 ini_set 不能设置的选项怎么办?apache 的话就可以用 .htaccess 来配置 php,而且只会对配置的目录生效,不会影响全局
    kn007
    kn007
    OP
    Jul 6, 2015
    35
    @elvba 这个我明白。但是我生产环境没那么复杂。。。
    typcn
    typcn
    Jul 6, 2015
    36
    @LINAICAI 因为 apache 没达到 502 的访问量就已经崩溃了
    cys
    cys
    Jul 6, 2015 via Android
    37
    到底是 lnmp还是 lemp
    kn007
    kn007
    OP
    Jul 6, 2015
    38
    @typcn 我完全同意你的观点。
    nginx只是返回502,而httpd却因为太多100%进程,搞垮了整台服务器,包括处在同台的数据库。
    kn007
    kn007
    OP
    Jul 6, 2015
    39
    @cys 两者一样 nginx 读音就是engine x
    kn007
    kn007
    OP
    Jul 6, 2015
    40
    @syhily 过来发表一下帅的人的意见,为何apache大法好^_^
    soli
    soli
    Jul 6, 2015
    41
    @elvba Nginx 不是可以 reload 么
    maoyipeng
    maoyipeng
    Jul 6, 2015 via iPhone
    42
    apache 不要用默认的mod_php,默认的serverlimit之类的参数也要调整
    bibizhang
    bibizhang
    Jul 6, 2015
    43
    看心情
    aalska
    aalska
    Jul 6, 2015
    44
    @pubby 慢速连接攻击 专门针对apache 2.2.X /某些2.X
    naver1
    naver1
    Jul 6, 2015
    45
    被502伤的太深了,还会死Apache好。
    nlzy
    nlzy
    Jul 6, 2015 via iPhone
    46
    @kn007 没什么求教的,我也不是大牛,我只是知道 tengine 可以动态加载模块
    sarices
    sarices
    Jul 6, 2015
    47
    apache配置好烦,还是nginx清爽
    mongodb
    mongodb
    Jul 6, 2015
    48
    说实话大多数时候讨论这问题就跟上班族讨论如何帮马云选择金融理财资产配置一样。。
    alex321
    alex321
    Jul 6, 2015
    49
    @zonghua nginx 防采集,或者浏览请求在时间段内超标也会返回 502 的。。
    Pseric
    Pseric
    Jul 6, 2015
    50
    Apache 前端挂个 Nginx 做 Proxy 不就好了吗?
    xiaodongus
    xiaodongus
    Jul 6, 2015
    51
    用lanmp最好
    kn007
    kn007
    OP
    Jul 6, 2015
    52
    @soli 是可以,但是apache不用reload~
    @maoyipeng 不懂
    @bibizhang 心情好才是真的好
    @Pseric 就是想说有没有必要嘛
    TrustyWolf
    TrustyWolf
    Jul 6, 2015
    53
    RHEL官方基本都是在用Apache,Nginx需要EPEL源。
    说明两者都是非常好的软件,喜好的话看个人吧。
    咱倒是觉得Nginx的配置文件看起来舒服些。
    kn007
    kn007
    OP
    Jul 6, 2015
    54
    @TrustyWolf 同感Nginx配置文件舒服。
    我基本都是编译的,所以还好。
    stackpop
    stackpop
    Jul 6, 2015
    55
    哪个工具链和文档更完善用哪个,架构得当多大业务都能支撑,到时候牛逼了再动不迟。
    cdffh
    cdffh
    Jul 6, 2015
    56
    我们之前用的apache 现在并发上来了apache扛不住,开始往nginx迁移了.具体的就不再这里赘述了.大家看这个文章吧.
    https://library.oreilly.com/book/0636920022343/high-performance-mysql-3rd-edition/426.xhtml?ref=toc#web_server_issues
    高性能mysql 里面有一章专门讲道这个问题
    kn007
    kn007
    OP
    Jul 6, 2015
    57
    @cdffh 额,好老了这本书
    kn007
    kn007
    OP
    Jul 6, 2015
    58
    看来基本上不是n/t就是a了,不过选n的人还是多
    cst4you
    cst4you
    Jul 6, 2015
    59
    tengine
    tabris17
    tabris17
    Jul 6, 2015
    60
    IO密集用Nginx(如:业务简单的Web网站)

    计算密集用Apache(如:企业内部系统、各种管理系统)
    kn007
    kn007
    OP
    Jul 6, 2015
    61
    @tabris17 请教下,为何呢?
    何为计算和IO密集?。。。
    tabris17
    tabris17
    Jul 6, 2015
    62
    @kn007
    IO密集,就是访问人数比较多的,业务逻辑简单,无非是数据库CRUD;
    计算密集就是同时访问人数相对较少,但是每次请求会有大量业务计算的
    kn007
    kn007
    OP
    Jul 6, 2015
    63
    @tabris17 我总以为计算产生io。。。
    业务计算都有哪些呢?是否能举几个例子,非常感谢。。。
    tabris17
    tabris17
    Jul 6, 2015
    64
    @kn007 就是消耗CPU的业务,比如每次请求都要计算pi的100w位
    kn007
    kn007
    OP
    Jul 6, 2015
    65
    @tabris17 擦。。。原来如此
    话说Apache处理这种计算密集的业务的优势在哪里?
    我现在也有个消耗CPU的业务页面,主要是一次性要读取10M大小的数据出来(从redis or mysql),然后排列分析
    tabris17
    tabris17
    Jul 6, 2015
    66
    @kn007 补充一下,所谓计算密集是指运行在Apache进程内的模块,fastcgi这种进程间交互的不算
    kn007
    kn007
    OP
    Jul 6, 2015
    67
    @tabris17 哦,其实还是不甚了解,嘿嘿
    Solerer
    Solerer
    Jul 10, 2015 via Android
    68
    Nginx
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1995 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 02:51 · PVG 10:51 · LAX 18:51 · JFK 21:51
    ♥ Do have faith in what you're doing.