【说站】为什么推荐大家使用 Nginx 而不是 Apache?
无论是 Nginx 还是 Apache 都是 Web 服务器应用,通俗点说我们的网站都是需要 Web 服务器应用来展现给客户的,而服务器是供 Web 服务器应用正常稳定的运行的基础。所以说选择好 Web 服务器应用是会影响到网站性能表现的,甚至会影响到用户的浏览体验。而目前比较主流的 Web 服务器应用也就是 Nginx 和 Apache 了,今天就给大家说明一下为什么我一直都推荐大家使用 Nginx 而不是 Apache?
有关 Nginx 和 Apache 的介绍我就不做赘述了,大家自行百度、谷歌一下就可以了解了,废话不多说了,直奔主题:
1、作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx 是 Apache 服务器不错的替代品;Nginx 在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型。
Nginx 作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP 代理服务器对外进行服务。Nginx 采用 C 进行编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好很多。
2、Nginx 配置简洁,Apache 复杂,Nginx 启动特别容易,并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。Nginx 静态处理性能比 Apache 高 3 倍以上,Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端来使用,Apache 的组件比 Nginx 多。
3、最核心的区别在于 Apache 是同步多进程模型,一个连接对应一个进程;Nginx 是异步的,多个连接(万级别)可以对应一个进程。
4、Nginx 的优势是处理静态请求,cpu 内存使用率低,Apache 适合处理动态请求,所以现在一般前端用 Nginx 作为反向代理抗住压力,Apache 作为后端处理动态请求。
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 模型的原理作的一个假设,真正的应用还是需要实测了再说的。
最后 Nginx 和 Apache 的差异总结成一句话就是:“Nginx 适合处理静态请求和反向代理,Apache 适合处理动态请求”。但这个差异化只有在请求量达到一定的阈值时表现差异才能表现出来,对于 WordPress 、 Typecho 等等这里动态站点来说某一天流量达到这个阈值的时候,还可以部署 LNMPA 这样的生产环境来应对和解决。所以流量阈值需求不到的时候,选择 Nginx 是性价比最好的选择了。
收藏 | 0点赞 | 0打赏
相关文章
- Apache报错指定的网络名不再可用解决方案
- 重识Nginx - 02 手把手教你编译适合自己的nginx 1.22.0
- nginx和apache那个好更好,我们应该如何选择
- web服务:Nginx和Apache的区别
- nginx php apache php 对比,Apache和nginx的比较「建议收藏」
- Apache URL重定向
- Nginx配置文件(nginx.conf)配置详解
- ubuntu下安装nginx_Linux中安装Nginx
- apache+nginx解决css引用本地字体不同域名打开提示跨域
- Apache-DBUtils实现CRUD操作
- Hadoop3.0-Hdfs | Apache Hadoop介绍
- Tomcat 与 Nginx,Apache的区别 ?
- java 使用apache的net包ftp上传文件详解编程语言
- Linux中如何快速删除Nginx(linux删除nginx)
- 配置Linux下快速删除Nginx配置的技巧(linux删除nginx)
- Nginx网站架构实战——09、编译PHP并与nginx整合
- Nginx网站架构实战——03、nginx虚拟主机配置
- 使用Apache和MSSQL构建强大的数据库系统(apache mssql)
- 安装Apache和PHP的一些补充
- Linux下APACHE&PHP&MYSQL&CGI修改版
- nginx/apache/php隐藏http头部版本信息的实现方法
- apache默认目录的修改方法.
- Apache服务器必备基本安全设置