Web服务器 Apache or Nginx 要如何选择?

2019-05-2508:23:46服务器及运维Comments2,357 views字数 1494阅读模式

Web服务器市场产品众多,最为主流和代表性的当属ApacheNginx以及微软的IIS。本文目的是通过Apache和Nginx进行对比,从而帮助广大用户们能够选择适合自己的Web服务器。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

1.简介文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Apache:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Apache创建于1995年,并从 1999 年开始在 Apache 软件基金会旗下进行开发。Apache灵活、高效,拥有丰富的扩展模块,以及活跃的社区支持,成为目前世界上最为主流的开源免费的Web服务器软件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Nginx:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

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

下面是2017年11月份更新的web服务器市场份额对比图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Web服务器 Apache or Nginx 要如何选择?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

数据来源:https://news.netcraft.com/archives/2017/11/21/november-2017-web-server-survey.html文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

2.对比文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

虽然Apache和Nginx各自的背景不同,但他们的作用目的是一致的,简单说就是接收用户请求,然后处理请求,最后将处理结果返回给用户。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

01.链接处理文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Apache和Nginx最大的不同在于它们对连接的处理方式。Apache提供一系列多重处理模块,通过这些多重处理模块来使用操作系统的资源,对进程和线程池进行管理,控制处理用户请求。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Apache提供了三种多重处理模块:mpm_prefork、mpm_worker、mpm_envent,下面我们做简要说明对比。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

mpm_prefork:模块产生众多子进程,每个子进程是单线程的,每个线程链接一个请求,如此一对一的关系。所以如果请求数大于进程数时,服务器的性能就表现得差强人意了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Web服务器 Apache or Nginx 要如何选择?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

mpm_worker:与prefork不同,worker中子进程是多线程的,每个线程管理一个用户连接。线程数要多于进程数量,这也就意味着新的连接能立刻得到一个空闲的线程,而不用等待进程空闲。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Web服务器 Apache or Nginx 要如何选择?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

mpm_event:该模块与worker相似,区别在于event可以处理长连接(keep-alive),以避免线程被请求长期占用而造成资源浪费,同时也增强了高并发场景下的请求处理能力。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Web服务器 Apache or Nginx 要如何选择?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

与Apache不同,Nginx是通过异步的、非阻塞的、事件驱动的方式在实现的。Nginx的工作进程是单线程的,每个线程可以异步的处理大量的用户请求。下面是Nginx的工作原理图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Web服务器 Apache or Nginx 要如何选择?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

图片来源:http://www.aosabook.org/en/nginx.html文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

02.静态与动态内容的处理文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

无论是静态还是动态内容,Apache都可以处理,Apache具有内置的解析和执行各种动态脚本语言(包括PHP,Python和Perl)的功能,无需借助外部处理器。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

毫无疑问,动态内容处理恐怕是Nginx的痛点。Nginx处理动态内容的效率并不高,且需借助外部的处理器。所以如果您的站点具有很多动态功能,Apache的表现可能会更切合你意。不过虽然与Apache相比Nginx的动态内容处理能力不佳,但其静态内容处理还是很高效的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

3.总结文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Apache拥有丰富的模块组件支持,稳定性强,BUG少,动态内容处理强。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

Nginx轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

存在即有道理,Apache和Nginx作为WEB服务各有所长,个人认为二者并不存在将来谁会完全替代谁。关键在于用户要认真考虑清楚自己的应用场景,根据自己的需求和情况来斟酌选择哪个产品,适合自己的才是最好的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/12896.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunwei/12896.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定