NGINX和Apache的区别:[通俗易懂]

NGINX和Apache的区别:[通俗易懂]Nginx轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下nginx能保持低资源低消耗高性能,而apache在PHP处理慢或者前端压力很大的情况下,很容易出…

大家好,又见面了,我是你们的朋友全栈君。

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

  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 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区

总结

两者最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程,而 nginx 是异步的,多个连接(万级别)可以对应一个进程

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

更为通用的方案是,前端 nginx 抗并发,后端 apache 集群,配合起来会更好。

转载于:https://www.cnblogs.com/fangwenchen/p/9635188.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143119.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • .net core docker部署_mvc是什么

    .net core docker部署_mvc是什么准备mvc的程序【asp.netmvc5网站】使用刚才创建的镜像,并把上诉文件目录挂载到iis指定磁盘dockerrun-d-p83:80–namedocker-drgs-vD:\workdir\docker_dir\webapps\iis-drgs\:C:\inetpub\wwwroot\dev01/aspnet:v1-d后台运行-p83:…

    2022年9月29日
    0
  • Ubuntu 18.04 清华更新源 Certificate verification failed

    Ubuntu 18.04 清华更新源 Certificate verification failed~#cat/etc/issueUbuntu18.04.5LTS\n\l#aptupdateIgn:1https://mirrors.tuna.tsinghua.edu.cn/ubuntubionicInReleaseIgn:2https://mirrors.tuna.tsinghua.edu.cn/ubuntubionic-updatesInReleaseIgn:3https://mirrors.tuna.tsinghua.edu.cn/ubuntubionic-

    2022年7月22日
    161
  • socketpair原理_pair of shoes意思

    socketpair原理_pair of shoes意思socketpair()函数的声明:#include<sys/types.h>#include<sys/socket.h>intsocketpair(intd,inttype,intprotocol,intsv[2]);socketpair()函数用于创建一对无名的、相互连接的套接子。 如果函数成功,则返回0,创建好的套接字分别是sv[0…

    2022年10月15日
    0
  • 关于在eclipse中中文汉字乱码的解决方式[通俗易懂]

    关于在eclipse中中文汉字乱码的解决方式[通俗易懂]很多童鞋反应在吧项目导入到eclipse(myeclipse)时中文会有乱码,修改了编码格式后还是乱码,这里给大家介绍一下关于中文乱码时修改编码的注意事项: 当在eclipse中打开一个文件后发现有中文乱码后,千万不能修改这个文件内容,一旦改过这个文件的内容,那怎么修改编码也没用了,只能重新导入。 当打开文件发现乱码后第一步是关闭这个文件,然后在这个文件上右键,选择属性,然后选择编…

    2022年5月26日
    57
  • 国产数据库乱象_四代户户通怎么开户

    国产数据库乱象_四代户户通怎么开户其实这篇文章是我周末开始写的,写这篇文章的这个周末,我的很多时候都是在思考一个数据库国产化替代的建设方案,翻阅了大量的资料。今年正好是我参加工作后的第31个年头,工作的最初十年,我写了十年代码,从汇编、COBOL到C语言,写了几十万行代码;随后的十几年,我一直在帮助用户用好数据库,也在帮助Oracle推广RAC技术;2015年开始,我一边继续从事数据库优化的工作,一边在帮助客户如何从Oracle迁移到成本更低的数据库系统上。所以对国产数据库我一直有一种十分特殊的情感,这是一种爱恨交织的情感。所以今天最后用“

    2022年9月19日
    0
  • Styling a ListView with a Horizontal ItemsPanel and a Header

    Styling a ListView with a Horizontal ItemsPanel and a Header

    2021年6月7日
    118

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号