Nginx 和 Apache 各有什么优缺点

2025-03-11 00:43:11
推荐回答(2个)
回答1:

Apache

Nginx
是世界上最通用的两大开源Web服务器。他们正为超过50%互联网流量传输提供服务,两种解决方案都能处理各种的工作场景,并与其他软件协同工作,从而提供完善的Web技术栈。尽管
Apache

Nginx
有许多共通的特性,并不能将它们视为可以完全相互替代的。它们各有所长,了解使用场景对你重新评估选择你的web服务器非常重要。
Nginx
相对
Apache
的优点
轻量级,同样起
WEB
服务,比
Apache
占用更少的内存及资源抗并发,
Nginx
处理请求是异步非阻塞的,而
Apache
则是阻塞型的,在高并发下
Nginx
能保持低资源低消耗高性能高度模块化的设计,编写模块相对简单社区活跃,各种高性能模块出品迅速
Apache
相对
Nginx
的优点
Rewrite
,比
Nginx

rewrite
强大模块超多,基本想到的都可以找到少
bug

Nginx

bug
相对较多超稳定
存在就是理由,一般来说,需要性能的
WEB
服务,用
Nginx
。如果不需要性能只求稳定,那就
Apache
吧。后者的各种功能模块实现得比前者,例如
ssl
的模块就比前者好,可配置项多。
这里要注意一点,
epoll
(
freebsd
上是
kqueue
)网络
IO
模型是
Nginx
处理性能高的根本理由,但并不是所有的情况下都是
epoll
大获全胜的,如果本身提供静态服务的就只有寥寥几个文件, Apache 的
select
模型或许比
epoll
更高性能。当然,这只是根据网络
IO
模型的原理作的一个假设,真正的应用还是需要实测了再说的。
如你所见,Apache

Nginx
都是很强力、灵活、能干的。决定哪个服务器对你来说最好,主要取决于什么功能可以解决你的特定需求,然后用你的方式去测试它。这两个项目在原生性能、功能,以及启动和运行每个解决方案所需的必要时间上有非常现实的冲突。然而,这些都是一系列取舍后的结果,不应该不假思索地随意使用。最后,没有通用的适合所有场景的
web
服务器,所以选择最切合你的目标的解决方案吧。
希望可以帮到你~~原文地址:http://www.xy26.cc/?post=194

回答2:

这个太长了,挑几个重点说一下:
apache优点:
1、守护进程相对稳定,重连机制做得好
2、跟php交互基本用module,在php上不用配置太多参数
3、相对nginx,重写(rewrite)支持更好
4、采用module,可拓展性更强,可以在任一阶段插入钩子增加灵活性。
apache缺点:
1、由于使用module形式加载,导致整个项目比较重
2、同步阻塞模型,容易导致进程阻塞无法正常访问
3、新加入的模型event据传性能相当不错,但目前官方称仍属于调试阶段,并不建议在生产环境使用。
nginx优点:
1、异步io处理模型,可以支持更高的并发
2、整体是个轻框架,反向代理一级棒(负载均衡)
3、采用php-fpm fastcgi模式连接php,负载量可以更大
nginx缺点:
1、守护进程由于给php-fpm做了,所以非常受限于php-fpm。一个输入参数可能会导致整个程序运行不下去
2、php-fpm要额外配置,排查问题多了一个环境需要排查
3、nginx可以执行rewrite,但性能没有apache那么好