本文给大家带来的是PHP
服务器 Apache
和 Nginx
的对比分析,有一定的参考价值。有需要的朋友可以参考一下,希望对你有帮助。
Apache
和 Nginx
的优缺点比较
1.nginx
相对于 apache
的优势:
轻量级,也是一种 web
服务,比 apache
占用更少的内存和资源。
反并发,nginx
异步非阻塞处理请求,而 apache
阻塞,nginx
在高并发下可以保持低资源、低消耗、高性能。
高度模块化设计,相对简单的模块编写。
社区活跃,各种高性能模块快速生产。
apache
相对于 nginx
的优势:
重写比 nginx
的重写更强。
有这么多模块,你可以找到你基本上想到的一切。
bug
少,nginx
bug
多。
超级巨星
存在就是原因。一般来说,需要性能的 web
服务使用 nginx
。如果你不需要性能,只需要稳定性,那么 apache
。后者的各种功能模块优于前者,比如 ssl
模块优于前者,可配置项多。这里需要注意的是,epoll
(kqueue
epoll
(freebsd
)网络 IO
模型是 nginx
处理性能高的根本原因,但并非所有案例都是 epoll
赢的。如果只有少数文件提供静态服务,那么 apache
的 select
模型可能比 EPOLL
具有更高的性能。当然,这只是基于网络 IO
模型原理的假设,真正的应用还是需要衡量的。
2.作为 Web
服务器:与 Apache
相比,Nginx
使用的资源更少,支持更多的并发连接,表现出更高的效率,这使得 Nginx
特别受虚拟主机提供商的欢迎。在高并发连接的情况下,Nginx
是 Apache
服务器很好的替代品:Nginx
是美国虚拟托管业务所有者经常选择的软件平台之一。它可以支持多达 50,000 个并发连接的响应。感谢 Nginx
选择 epoll
和 kqueue
作为我们的开发模式。
Nginx
作为负载均衡服务器:Nginx
内部可以直接支持 Rails
和 PHP
程序进行外部服务,也可以支持外部服务作为 HTTP
代理服务器。Nginx
是用 C
写的,在系统资源开销和 CPU
效率上比 Perlbal
好很多。
作为邮件代理服务器:Nginx
也是一款优秀的邮件代理服务器(最早开发这款产品的目的之一就是做邮件代理服务器),Last
.fm
描述了成功而精彩的体验。
Ngx
是一款安装非常简单、配置文件简单(也可以支持 perl
语法)、bug
很少的服务器:ngix
非常容易启动,几乎可以连续运行 7*24,即使运行几个月也不需要重启。您也可以不间断地升级软件版本。
3.Nginx
配置简单,Apache
复杂。
Nginx
静态处理性能比 Apache
高 3 倍以上。
Apache
PHP
支持相对简单,Nginx
需要配合其他后端。
Apache
的组件比 Nginx
多。
Nginx
现在是 Web
服务器的首选。
4.核心区别在于 apache
是一个同步的多进程模型,一个连接对应一个进程。Nginx
是异步的,多个连接(万级)可以对应一个进程。
5.nginx
可以很好地处理静态文件,并且消耗更少的内存。但毫无疑问,apache
目前仍然是主流,它有很多丰富的功能。所以需要匹配。当然,如果能够确定 nginx
适合需求,那么使用 nginx
会是一种比较经济的方式。
6.从个人以往的使用情况来看,nginx
的负载能力远高于 apache
。最新的服务器也切换到了 nginx
。而且 nginx
更改配置后,无法测试配置是否有问题。apache
重启后会发现配置错误,会崩溃。当它改变时,它会非常小心。现在有很多集群站。前端 nginx
是反并发的,后端 apache
集群是很好协调的。
7.nginx
对动态请求的处理是鸡肋。一般来说,apache
应该做动态请求。nginx
仅适用于静态和反向请求。
8.从我个人的经验来看,nginx
是一个非常好的前端服务器,负载性能很好。在老本上打开 nginx
,用 webbench
模拟一万个静态文件请求,很容易。Apache
php
和其他语言得到了很好的支持。另外,apache
有强大的支持网络,比 nginx
开发时间更长,bug
更少。但是,apache
的缺点是不支持多核处理负载。建议前端使用 nginx
,后端使用 apache
。大型网站建议使用 nginx
自生成集群功能。
9.Nginx
在两个主要方面优于 apache
。Nginx
本身就是反向代理服务器 2。Nginx
支持 7 层负载均衡;其他当然,Nginx
可能比 apache
支持更高的并发,但是根据 2011 年 4 月 NetCraft
的统计,Apache
仍然占 62.71%,而 Nginx
是 7.35%,所以总体来说,Aapche
仍然是大多数公司的第一,因为它成熟的技术和开发社区已经有了非常好的表现。
10.你对网络服务器的需求决定了你的选择。在大多数情况下,nginx
都优于 APACHE
,比如静态文件处理、PHP
-CGI
支持、反向代理功能、前端 Cache
、连接维护等等。在 Apache
+PHP
(prefork
)模式下,如果 PHP
处理速度慢或者前端压力大,很容易因为 Apache
进程数量激增而造成拒绝服务的现象。
1.看看 nginx
lua
模块:https
://github
.com
/chaoslaw
…apache
的模块比 nginx
多,直接用 lua
实现 Apache
是最流行的。为什么呢?大多数人都懒得更新到 nginx
或者学习新东西。
12.对于 nginx
,我喜欢它的配置文件非常简洁。常规配置使许多事情变得简单高效,占用的资源更少,并且具有强大的代理功能。非常适合前端响应服务器。
13.Apache
在处理动态上有优势,Nginx
有更好的并发性和低 CPU
内存消耗。如果重写频繁,Apache
更好。
Nginx
的优势在于:
在网络的第七层工作,我们可以为 http
应用做一些分流策略,比如域名和目录结构。它的规则比 HAProxy
更强、更灵活,这也是它目前广泛流行的主要原因之一。Nginx
能使用的场合比 LVS
多得多。
Nginx
对网络稳定性的依赖非常小。理论上,它可以在 ping
的时候执行加载功能,这也是它的优势之一。相反,LVS
非常依赖网络稳定性,我对此深有体会。
Nginx
安装配置相对简单,测试方便。它基本上可以用日志打印出错误。LVS
的配置和测试需要很长时间,LVS
非常依赖网络。
它能承受高负载压力且稳定,在硬件较好的情况下一般能支持上万次并发,负载程度相对比 LVS
小。
Nginx
可以通过端口检测服务器的内部故障,如状态码、超时等。服务器在处理网页时返回,并将错误的请求重新提交给另一个节点,但缺点是它不支持 url
检测。例如,如果用户正在上传文件,而处理上传的节点恰好在上传过程中失败,Nginx
会将上传内容剪切到另一台服务器进行再处理,LVS
会直接将其剪切掉。如果上传了大文件或重要文件,用户可能会不满意。
Nginx
不仅是一款优秀的负载均衡器/反向代理软件,还是一款功能强大的 Web
应用服务器。LNMP
也是近年来非常流行的 web
架构,在高流量环境下具有很好的稳定性。
Nginx
作为 Web
反向加速缓存越来越成熟,比传统的 Squid
服务器速度更快,可以考虑作为反向代理加速器。
Nginx
可以作为中级反向代理。在这个级别上,Nginx
基本没有对手,唯一能和 Nginx
相提并论的就是 lighttpd
。但是 lighttpd
目前还没有实现 Nginx
的全部功能,配置也没有那么清晰可读,社区素材也远没有 Nginx
活跃。
Nginx
还可以作为静态网页和图片服务器,性能无与伦比。Nginx
社区非常活跃,有很多第三方模块。
Nginx
的缺点是:
Nginx
只能支持 http
、https
和 Email
协议,使得应用范围变小,这是它的缺点。
后端服务器的运行状况检查只能通过端口来检测,不能通过 url
来检测。不支持直接持有 Session
,但可以通过 ip_hash
解决。
转载请注明:汇站网 » PHP服务器Apache和Nginx的对比分析