• 技术文章 >后端开发 >php教程

    Apache和Nginx如何选择

    *文*文2017-12-22 10:20:04原创4405
    市场上WEB服务器产品众多,主流的当数Apache和Nginx。可是Apache和Nginx之间该如何选择,也让很多新手有些困惑。本文通过Apache和Nginx惊进行对比,来让大家有更清楚的理解和选择。

    一、简介

    Apache:
    Apache创建于1995年,并从 1999 年开始在 Apache 软件基金会旗下进行开发。Apache灵活、高效,拥有丰富的扩展模块,以及活跃的社区支持,成为目前世界上最为主流的开源免费的Web服务器软件。

    Nginx:
    Nginx是由俄罗斯软件工程师Igor Sysoev编写的免费开源Web服务器。自从2004年上市以来,nginx专注于高性能,高并发性和低内存使用。并且其在负载均衡,缓存,访问和带宽控制以及与各种应用程序高效集成等方面的特性,都使得它逐步深受广大用户青睐。

    下面是2017年11月21日更新的最新web服务器市场份额对比图:

    1.png

    二、对比

    虽然Apache和Nginx各自的背景不同,但他们的作用目的是一致的,简单说就是接收用户请求,然后处理请求,最后将处理结果返回给用户。

    1.链接处理

    Apache和Nginx最大的不同在于它们对连接的处理方式。Apache提供一系列多重处理模块,通过这些多重处理模块来使用操作系统的资源,对进程和线程池进行管理,控制处理用户请求。

    Apache提供了三种多重处理模块:mpm_prefork、mpm_worker、mpm_envent,下面我们做简要说明对比。

    mpm_prefork:模块产生众多子进程,每个子进程是单线程的,每个线程链接一个请求,如此一对一的关系。所以如果请求数大于进程数时,服务器的性能就表现得差强人意了。

    2.png

    mpm_worker:与prefork不同,worker中子进程是多线程的,每个线程管理一个用户连接。线程数要多于进程数量,这也就意味着新的连接能立刻得到一个空闲的线程,而不用等待进程空闲。

    mpm_event:该模块与worker相似,区别在于event可以处理长连接(keep-alive),以避免线程被请求长期占用而造成资源浪费,同时也增强了高并发场景下的请求处理能力。

    3.png

    与Apache不同,Nginx是通过异步的、非阻塞的、事件驱动的方式在实现的。Nginx的工作进程是单线程的,每个线程可以异步的处理大量的用户请求。下面是Nginx的工作原理图:

    4.png


    2.静态与动态内容的处理

    无论是静态还是动态内容,Apache都可以处理,Apache具有内置的解析和执行各种动态脚本语言(包括PHP,Python和Perl)的功能,无需借助外部处理器。

    毫无疑问,动态内容处理恐怕是Nginx的痛点。Nginx处理动态内容的效率并不高,且需借助外部的处理器。所以如果您的站点具有很多动态功能,Apache的表现可能会更切合你意。不过虽然与Apache相比Nginx的动态内容处理能力不佳,但其静态内容处理还是很高效的。

    三、总结

    Apache拥有丰富的模块组件支持,稳定性强,BUG少,动态内容处理强。

    Nginx轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效。

    存在即有道理,Apache和Nginx作为WEB服务各有所长,个人认为二者并不存在将来谁会完全替代谁。关键在于用户要认真考虑清楚自己的应用场景,根据自己的需求和情况来斟酌选择哪个产品,适合自己的才是最好的。


    相关阅读:

    如何在Ubuntu 16.04下面配置Apache HTTP Serve

    CentOS7中apache与php7及mysql5.7的安装配置详解

    LNMP环境更换Nginx服务器为Tengine的示例代码

    Nginx反向代理和负载均衡实践

    以上就是Apache和Nginx如何选择的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Apache Nginx 选择
    上一篇:TP5之Cache的原理及使用 下一篇:PHP回调函数的解析
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• php下的权限算法的实现_PHP教程• 收藏的PHP常用函数 推荐收藏保存_php基础• php 多线程上下文中安全写文件实现代码_php技巧• 一个PHP模板,主要想体现一下思路_php技巧• 深入浅析PHP7.0新特征(五大新特征)_PHP
    1/1

    PHP中文网