首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

究竟是 Apache 还是 Nginx?

  •  1
     
  •   kn007 · 2015-07-05 22:28:38 +08:00 · 6081 次点击
    这是一个创建于 1476 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

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

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

    计算密集用Apache(如:企业内部系统、各种管理系统)
        61
    kn007   2015-07-06 18:01:31 +08:00
    @tabris17 请教下,为何呢?
    何为计算和IO密集?。。。
        62
    tabris17   2015-07-06 18:09:07 +08:00
    @kn007
    IO密集,就是访问人数比较多的,业务逻辑简单,无非是数据库CRUD;
    计算密集就是同时访问人数相对较少,但是每次请求会有大量业务计算的
        63
    kn007   2015-07-06 18:17:18 +08:00
    @tabris17 我总以为计算产生io。。。
    业务计算都有哪些呢?是否能举几个例子,非常感谢。。。
        64
    tabris17   2015-07-06 18:26:23 +08:00
    @kn007 就是消耗CPU的业务,比如每次请求都要计算pi的100w位
        65
    kn007   2015-07-06 18:48:56 +08:00
    @tabris17 擦。。。原来如此
    话说Apache处理这种计算密集的业务的优势在哪里?
    我现在也有个消耗CPU的业务页面,主要是一次性要读取10M大小的数据出来(从redis or mysql),然后排列分析
        66
    tabris17   2015-07-06 19:09:45 +08:00
    @kn007 补充一下,所谓计算密集是指运行在Apache进程内的模块,fastcgi这种进程间交互的不算
        67
    kn007   2015-07-06 19:10:48 +08:00
    @tabris17 哦,其实还是不甚了解,嘿嘿
        68
    Solerer   2015-07-10 13:34:15 +08:00 via Android
    Nginx
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   846 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 26ms · UTC 19:57 · PVG 03:57 · LAX 12:57 · JFK 15:57
    ♥ Do have faith in what you're doing.