因为Nginx在我们项目中的地位是越来越重要了,所以最近话时间整理了下Nginx的内容了,希望对各位小伙伴有帮助哦!
Nginx基本介绍
发音:Engine X
源码:https://github.com/nginx/nginx
1. 1. Nginx诞生历史
1. 1. 1.感受一下Nginx的地位
从1995年以来的市场占有率变化,可以看到最近几年Nginx已经超过Apache成 为 Web Server 霸主。
https://news.netcraft.com/archives/category/web-server-survey/
截止2020年12月,全球排名前1000的网站, 46%在用Nginx。Nginx的诞生和蓬勃发展,可以说是顺应了互联网时代的历史潮流。
1.1.2.什么是C10K问题
我们以中国的互联网发展历史为例,来感受一下互联网环境和趋势的变化:
1994年,北京接入互联网,门户和搜索大行其道,代表公司:网易、新浪、搜狐 百度。
2000年,岀现互联网泡沫,社交电商游戏风头正盛,代表公司:腾讯QQ、新浪博
2009年,3G牌照发布;2013年,4G牌照发布,智能手机普及率越来越高,中国全面进入移动互联网时代,代表公司:微信、微博、小米、滴滴、美团、饿了么、字节 跳动。20多年的时间里面,网络对于生活的渗透越来越全面,中国以及全球网民的数量越 来越多,计算机的计算效率越来越高、存储空间越来越大、网速越来越快、体积越来越 小。
也就是在2000年以后,互联网用户数量持续增加,网站的活跃用户也大大增加,如 何支撑上万个用户同时访问成了一个突出的问题。Dan Kegel发表了著名的C10K问题 的论文,也就是单机1万个并发连接的问题(Concurrency 10K) o
http://www.kegel.com/c1 Ok.html
在这里面,Dan说升级硬件代价太大了,必须从软件设计的层面来解决。 在这样的时代背景中,在2000年前后的节点,Nginx (Engine X)诞生了。 https://www.nginx.com/people/igor-sysoev/
1. 1. 3. Nginx 的诞生
2000年左右,时年42岁的俄罗斯系统管理员IgorSysoev开始启动Nginx项目。 2002年十月Sysoev发布了第一段公共简码,它是用C语言编写的。2004年Nginx 开源了。
Nginx轻松地解决了 C10K的问题,单机性能可以达到5W左右的并发,慢慢地流 行起来。
2011年,Igor Sysoev成立了商业公司,12年开始为企业提供商业支持,13年发 布了商业版本的Nginx Pluso我们一般说的Nginx版本指的是开源的版本,域名是 nginx.org。商业版本的 Nginx 域名是 nginx.com。
在2019年5月,美国公司F5 Networks以6.7亿美元的价格收购了 Nginx公司。 有的同学可能有所耳闻,F5是一种硬件负载均衡器,价格昂贵,动辄几十万上百万,很 多银行在用。
19年12月Nginx之父俄罗斯程序员Igor Sysoev被警方带走,他的老东家 Rambler集团起诉了他,声称其拥有NginxWeb服务器代码的完全所有权。主要争议点 就在于,Nginx是Sysoev在Rambler上班的时候开发的,所以是属于公司的。当然后 面因证据不足被释放了。
1.2.Nginx与其他Web服务器对比
Nginx是一个轻量级的HTTP服务器(HTTP Server) o当然除了 HTTP, Nginx 也支持SMTP、POP3和IMAP协议。还可以通过模块支持TCP。
和 Apache (全名 Apache HTTP Server Project , https://httpd.apache.org/) 一样,它们都是用来负责处理和响应用户请求的。Apache在零几年的时候非常流行, LAMP (Linux+Apache+MySQL+PHP)中的 A就是Apacheo
Nginx和Apache的最大的区别就是Nginx能支持更大的并发量。
HTTP Server和Tomcat有什么区别?
注意,Tomcat是Application Server。一般我们说的应用服务器(Application Server)是用来存放和运行系统程序的服务器,负责处理程序中的业务逻辑,如Tomcat、 Weblogic、Jboss (现在大多数应用服务器也包含了 web服务器的功能)。
HTTP服务器一般是用来访问静态的资源,而应用服务器可以动态生成资源内容,比如 Java 的 Servleto
Nginx也可以通过模块开发来提供应用功能,Tomcat也可以直接提供HTTP服务, 通常用在内网和不需要流控等小型服务的场景(小型的应用服务器,不追求性能的业务, 用不到Nginx)因为HTTP服务器跑在应用服务器的前面,所以也叫做代理服务器。
一般来说HTTP服务器和应用服务器是一起使用的。比如运行多个Tomcat,通过 Nginx实现负载均衡。或者把静态资源放在Nginx,动态资源放在Tomcat,实现动静分离。