本文给大家带来的是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 的对比分析