在Apache和Nginx两者web服务器中如何选择适合的网站服务器?
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
前端时间写过一篇文章 关于网站服务器的 常用的web服务器(windows+Linux)软件有哪些?常用的12款Web服务器(windows+Linux)软件整理; 今天有人又问老梁Apache和Nginx两者web服务器咋选择,这也确实是一个事儿;
还是先来说说什么是web服务器(网站服务器)
简单来说,web服务器是网站服务器,可以放置网站所需要的文件、应用以及程序等,以供所有用户进行浏览。Web服务器的使用是为了让网络中的信息实现共享,互联网上的任意用户都可以下载与上传以及向浏览器等客户端上传文档等。
Web服务器是基于TCP/IP协议下的HTTP协议的,可以向发出请求的浏览器提供文档的程序。HTTP协议属于应用层协议,主要特点是支持客户/服务器模式;简单快速;灵活;无连接;无状态。
Web服务器是直接影响网站性能的关键因素,也是每个站长选择网站运营环境时必然考虑的问题。Web服务器大致有 IIS、Kangle、WebSphere、WebLogic、Apache、Tomcat、Nginx以及Jboss等几类。
在这其中使用较多是微软的IIS服务器、Nginx以及Apache,同时这三类web服务器也是当前主流并且具有代表性的web服务器。那么在Apache和Nginx中应该如何选择适合自己的网站服务器?
Nginx和Apache一样,都是HTTP服务器软件,在功能实现上都采用模块化结构设计,都支持通用的语言接口,如PHP、Perl、Python等,同时还支持正向和反向代理、虚拟主机、URL重写、压缩传输、SSL加密传输等;
1、Apache和Nginx定义
Apache仍然是目前世界上最为主流的开源免费的Web服务器软件,市场占有率达60%左右。世界上很多著名网站都使用Apache,成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Nginx是异步框架的网页服务器,可用作反向代理、负载平衡器和HTTP缓存。其是免费开源软件,一大部分Web服务器使用Nginx,通常作为负载均衡器。Nginx专注于高性能,高并发性和低内存使用。且在负载均衡、缓存、访问和带宽控制以及与各种应用程序高效集成等方面的特性,深受用户青睐。
2、Apache和Nginx对比
Apache和Nginx背景不同但作用目的一致,即接收用户请求处理请求,最后将处理结果返回给用户。
1)链接处理
Apache和Nginx最大的不同在于它们对连接的处理方式。
Apache提供一系列多重处理模块,通过这些多重处理模块来使用操作系统的资源,对进程和线程池进行管理,控制处理用户请求。Nginx是通过异步的、非阻塞的、事件驱动的方式在实现的,工作进程是单线程的,每个线程可以异步处理大量用户请求。
2)Apache和Nginx内容处理
对于网络上面内容的处理,有动态内容以及静态内容两方面的处理操作。对于这两方面Apache均可。Apache具有内置的解析和执行各种动态脚本语言(包括PHP,Python和Perl)的功能,无需借助外部处理器。Nginx处理动态内容效率不高且需借助外部的处理器。
Apache单一介绍:
1、apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache
2、apache 发展到现在,模块超多,基本想到的都可以找到
3、apache 更为成熟,少 bug ,nginx 的 bug 相对较多
4、apache 超稳定
5、apache 对 PHP 支持比较简单,nginx 需要配合其他后端用
6、apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向。
7、apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区
Nginx单一介绍:
1、轻量级,采用C进行编写,同样的 web 服务,会占用更少的内存及资源
2、抗并发,nginx以 epoll and kqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
3、nginx 处理静态文件好,静态处理性能比 apache 高三倍以上
4、nginx 的设计高度模块化,编写模块相对简单
5、nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache配置复杂,重启的时候发现配置出错了,会很崩溃
6、nginx 作为负载均衡服务器,支持 7 层负载均衡
7、nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器
8、启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级
9、社区活跃,各种高性能模块出品迅速
Apache对PHP支持比较简单,Nginx需要配合其他后端用 选择Nginx的优势所在
作为Web服务器: Nginx处理静态文件、索引文件,自动索引的效率非常高。
作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。
作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。
在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。它采用内核Poll模型(epoll and kqueue ),可以支持更多的并发连接,最大可以支持对50 000个并发连接数的响应,而且只占用很低的内存资源。
在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。
在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7×24小时不间断地运行。
宝塔面板可以方便的配置LAMP或者LNMP环境,但是并不能一键搭建apache和nginx共存的环境,需要自己手动设置。
Apache和Nginx各有优缺点,有许多朋友会将两者结合来用,使用服务器的性能更优越;
由于Nginx和Apache各自的优势,现在很多人选择了让两者在服务器中共存。在服务器端让Nginx在前,Apache在后。由Nginx做负载均衡和反向代理,并且处理静态文件,讲动态请求(如PHP应用)交给Apache去处理。
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!