前言
nginx是一个web应用及反向代理工具,由一名俄罗斯程序员(Igor)发明的;NGINX是一个免费的,开源的高性能HTTP服务器和反向代理,以及IMAP / POP3代理服务器。 NGINX以其高性能,稳定性,丰富的功能集,简单的配置和低资源消耗而闻名。
nginx的起源
2002年,一个叫Igor Sysoev的俄罗斯哥们儿(貌似俄罗斯叫Igor的人挺多的) 写出了一个叫Nginx(和Engine X谐音,取引擎之义)。 那时候有一个时代背景,当时C10K(Concurrency 10K,1万并发)问题还是困扰绝大多数 web服务器的一个难题。Nginx利用异步事件驱动的架构写成,是C10K问题的一个很好的答卷。 Nginx的第一个公开发行版是在2004年发布的,之前都是作为俄罗斯访问量第二的网站Rambler 的内部使用。Nginx的主要优势在于“轻、快、活”:
- 轻:很低的资源占用,甚至能在很多嵌入式设备上运行。
- 快:响应速度超快,几乎不会由于高并发影响响应速度。
- 活:配置灵活,广泛的模块支持。
C10K
单台服务器要同时支持并发 10K 量级的连接,这些连接可能是保持存活状态的。
apache的介绍
为什么要介绍apache呢,是因为apache也是著名的web应用之一,并且在之前的岁月中,几乎是碾压web全场,虽然nginx后来者居上,但是还是要了解一下。
Apache HTTP服务器是 Robert McCool 在1995年写成,并在1999年开始在Apache软件基金会的 框架下进行开发。由于Apache HTTP服务器是基金会最开始的一个项目也是最为有名的一个项目, 所以通常大家提到Apache这个词都是说的Apache HTTP Server。
Apache web服务器从1996年开始就是互联网上最为流行的HTTP服务器。Apache之所以这么流行 很大程度上是由于相比其他的软件项目,在Apache基金会的精心维护下他的文档十分的详尽还有 集成的支持服务。
Apache由于其可变性、高性能和广泛的支持,经常是系统管理员的首选。他可以通过一系列 的语言相关的扩展模块支持很多解释型语言的后端,而不需要连接一个独立的后端程序。
Apache软件基金会也是利用开源软件盈利的一个范本。时至今日,Apache软件基金会 已经枝繁叶茂,在基金会名下的开源项目我们耳熟能详的有:
- Apache HTTP Server
- Ant(Java的编译工具)
- ActiveMQ(MQ集群)
- Cassandra(强一致的分布式KV数据库)
- CloudStack(OpenStack的劲敌)
- CouchDB(KV数据库)
- Flume(日志收集工具)
- Hadoop、Hbase、Hive
- Kafka(流式计算)
- Lucene(开源搜索引擎)
- Maven(Java编译&依赖管理工具)
- Mesos(分布式协调)
- OpenNLP(开源自然语言处理库)
- OpenOffice(开源的类Office工具)
- Perl(Perl语言)
- Spark(分布式计算集群)
- Storm(流式计算)
- Struts(Java SSH框架的第二个S)
- Subversion(SVN,你懂的)
- Tcl(Tcl语言)
- Thrift(Java网络框架)
- Tomcat(大名鼎鼎的Java容器)
- ZooKeeper(分布式协调集群)
apache与nginx比较
网上关于Apache和Nginx性能比较的文章非常多,基本上有如下的定论:
- Nginx在并发性能上比Apache强很多,如果是纯静态资源(图片、JS、CSS)那么Nginx是不二之选。
- Apache有mod_php、在PHP类的应用场景下比Nginx部署起来简单很多。一些老的PHP项目用Apache 来配置运行非常的简单,例如Wordpress。
- 对于初学者来说Apache配置起来非常复杂冗长的类XML语法,甚至支持在子目录放置.htaccess 文件来配置子目录的属性。Nginx的配置文件相对简单一点。
- Nginx的模块比较容易写,可以通过写C的mod实现接口性质的服务,并且拥有惊人的性能。 分支OpenResty,可以配合lua来实现很多自定义功能,兼顾扩展性和性能。
参考文档
https://zhuanlan.zhihu.com/p/20204159
https://www.infoq.cn/article/2016/11/Nginx-when-replace-Apache
https://www.csdn.net/article/2013-09-09/2816874-this-russian-software-is-taking-over-the-internet
https://blog.csdn.net/yeasy/article/details/43152115
https://nginx.org/