我2008年开始使用nginx,2009年开始开发nginx模块,ngnix最大的特点是性能,是很好的c10k的实践。在nginx流行之前虽然还有lighttpd,squid,但那个时期apache的server模型是多进程和多线程,不管是什么场景,只要当前连接数过万,都是伺服器的负载都是很高的。

nginx的server模型是多进程io复用,一个进程可以同时处理过万个tcp连接,Linux使用epoll,bsd系使用kqueue这些基于事件驱动去实现io复用,同时nginx内部使用了非常高效的数据结构去管理这些链接,例如rbtree,这样使得管理十万以上的连接CPU消耗也可以有效控制。

nginx是基于数据流去处理http数据的,因此nginx模块的开发并不容易,由于开源社区的努力,现在也存在好多nginx模块,几乎apache常用的模块nginx也有对应的模块,有几个关键的模块,例如ssl,ssi,url rewrite,gzip,这样nginx就可以很轻易取代apche的地位了。于此同时,nginx的反向代理也是特色之一,因此nginx不但取代了apache也在一些领域里取代了squid,主要是squid实在太老旧了。


《nginx比Apache跑得快;不管你同不同意,灵活性还是nginx好得多!》

Nginx不知比apache强大多少倍的!即便是APaChe2.4来比赛也是如此!Nginx堪称程序员级的web应用伺服器!

一、设计思想注定nginx的性能比Apache高得多;

nginx使用c语言编写而成,是当今世界跑得最欢的web伺服器,也许每个人都在接受它的服务。尤其是的中国这个互联网+的大世界里,nginx这个开源的软体受国人欢迎的程度已远远超过了那些高贵的IBM、微软的web应用伺服器了!

图:2018年NGINX受欢迎的程度正在疯狂上升;

二、后来居上的大陆互联网,nginx最受欢迎;

Nginx是一款轻量级的Web 伺服器/反向代理伺服器及电子邮件(IMAP/POP3)代理伺服器,开源发布,所以还有了阿里的中国化版本Tengine。

Nginx其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现最好。

三、nginx自产生以来,nginx成为几乎所有大并发量WEB伺服器的首选;

中国大名大名鼎鼎人网路平台基本都用上了nginx:比如百度,比如京东,比如新浪,比如网易,比如腾讯,比如淘宝等等。

四、关于nginx的稳定性Monit自动监控;

Monit 算是 Linux进程和服务监控的大神。 monit免费、开源的一款基于网路的进程监控工具。它能自动地监控和管理系统进程,当然能量远不止于此。

Monit使用C语言编写而成,处理效率非常之高,占用资源极少,配置参数简单,只使用几个if … then…语句就可以完成监控任务。尤其适用于对某些进程进行守护。比如:检测到http服务不正常时,自动重启nginx 。

monit还能监控象Apache, MySQL, Mail, FTP, ProFTP, SSH各式各样的服务。其最大有功能就在于一个进程服务宕机了,monit就可以重新打开这个服务!

总结:流行就有流行的道理!假如你要做个大平台,用用nginx也许是个正确的选择!


Project 1:Nginx和Apache的区别 1. apache 相对于nginx 的优点: rewrite ,比nginx 的rewrite 强大 动态页面,nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。 模块超多,基本想到的都可以找到 少bug ,nginx 的bug 相对较多超稳定 2. nginx相对于apache的优点: 轻量级,同样起web 服务,比apache占用更少的内存及资源 ,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache伺服器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软体平台之一. 能够支持高达 50,000 个并发连接数的响应, 这归功于Nginx为我们选择了 epoll and kqueue 作为开发模型. 抗并发,nginx 处理请求是非同步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 高度模块化的设计,编写模块相对简单 社区活跃,各种高性能模块出品迅速啊 Nginx本身就是一个反向代理伺服器 负载均衡能力突出,Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 伺服器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多. 3. 核心区别:apache是同步多进程模型,一个连接对应一个进程;nginx是非同步的,多个连接(万级别)可以对应一个进程 一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。后者的各种功能模块实现得比前者,例如ssl 的模块就比前者好,可配置项多。这里要注意一点,epoll(freebsd 上是 kqueue )网路IO 模型是nginx 处理性能高的根本理由,但并不是所有的情况下都是epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的select 模型或许比epoll 更高性能。 先说Select: Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024. 操作限制:通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍(这就是apache慢的原因). 再说Epoll: Socket数量无限制 操作无限制:基于内核提供的反射模式,有活跃Socket时,内核访问该Socket的callback,不需要遍历轮询(这当然是nginx快的原因啦). 原理部分小编觉得读者知道这些就够了,起码当别人问起你选择上述二者之一的理由你已经够应付啦,给你推荐一种折中的方案,nginx做前端,apache做后端


对java程序员来说apache基本是鸡肋,当然你如果非要说tomcat是apache的扩展,那也随你,单就apache来说,静态比不过nginx,动态和weblogic/jboss这些比又不是一个档次,别人用不用不知道反正我们是不用滴


nginx是因互联网而生的轻量级、高性能,高并发性和低内存使用的场景。

Apache因年代久远,属于重型的的web应用伺服器,每个请求都会占用一个进程处理,进程非常占资源 ,而且当并发量大的时候,就需要等额的进程,导致高内存、CPU的占用。


还不错 用了久的wdcp 换宝塔了 在linux上跑得还阔以


推荐阅读:
相关文章