第一章 1.1节 Nginx概念
1.1 Nginx是什么
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.run站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
1.2 Nginx的特点
- 更快:单次请求响应更快,高并发可以更快的处理响应。
- 高拓展性:设计极具扩展性,由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。
- 高可靠性:很多高流量网站都在核心服务器上大规模使用Nginx。
- 低内存消耗:一般1万个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB内存。
- 高并发:单机支持10万以上的并发连接。
- 热部署:master管理进程与worker工作进程的分离设计,使得Nginx能够支持热部署。
- 开源协议:使用BSD许可协议,免费使用,且可修改源码。
1.3 Nginx应用场景
一、HTTP服务器
Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。
二、静态服务器
静态服务器,通常会提供一个上传的功能,其他应用如果需要静态资源就从该静态服务器中获取。
三、反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
四、负载均衡
负载均衡也是Nginx常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其他关键任务服务器等,从而共同完成工作任务。
简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。而Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略。
负载均衡通过upstream指令来实现。
五、动静分离
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。
1.4 Nginx原理
基本运行原理:
Master进程:读取并验证配置文件nginx.conf;管理worker进程。
Worker进程:每个worker进程都维护一个线程(避免线程切换),处理连接和请求;注意worker进程的个数由配置文件决定,一般和cpu个数相关,配置几个就有几个worker进程。