一、引入Nginx
1.什么是web服务器
Web服务器是一个能够接收http请求并作出响应的程序。SpringBoot项目启动时内置的Web服务器是Tomcat。
实际上我们业界中还有很多Web服务器,它们具备很多不同的特征
网关Gateway项目使用Netty服务器,Netty服务器内部是NIO的所以性能更好
大多数情况我们会使用Tomcat作为Web服务器。它是我们请求\响应流程中的核心组件。Tomcat是也有缺点
常规情况下,一个tomcat并发数在100多一点。一般情况下,一个网站要1000人在线,并发数是2%~5% 也就是20~50并发。
并发数是指同时访问服务器站点的连接数
如果需要一个支持更高并发的服务器,就是需要使用Nginx
2.什么是正向代理
正向代理:当想要访问的目标服务器无法连通时,可以借助代理服务器间接访问该目标服务器。
正向代理的模式为下图
举例:类似于生活中的介绍人、游戏加速器。
先从了解正向代理到了解反向代理,
3.反向代理
反向代理:充当Web服务器网关的代理服务器。
特点:想要请求的是代理服务器的地址,不需要知道真正提供服务的服务器地址
好处:反向代理服务器后面可能是一个服务器集群,方便负载均衡
反向代理的模式为下图
举例:类似于生活中的代理人(中介),有什么事情直接找这个人就能完成需求,它怎么完成的我们不用管。
二、Nginx
1.简介
Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。
2.优势
- 高并发响应性能非常好,官方 Nginx 处理静态文件 5万/秒
- 反向代理性能非常强。(可用于负载均衡)
- 内存和 cpu 占用率低。(为 Apache(也是一个服务器) 的 1/5-1/10)
3.快速的原因
主要原因之一:Nginx使用NIO来实现
从Nginx内部的结构上和运行流程上,它内部是一个主进程(Master)多个工作进程(Worker)。
Master负责统筹管理配置和Worker的分工。
Worker来负责处理请求,作出响应。
一个Worker接到从Master分配来的一个请求后,会立即对请求进行处理。但是在请求发送完成后且还没有返回响应前,Worker会继续处理别的请求直到返回响应时,该Worker才会去处理响应。最终每条Worker进程全程无阻塞。
3.使用
实际开发中,Nginx可以用于反向代理服务器。实际处理请求的是Tomcat服务器。
因为Nginx优秀的静态内容并发性能使用它作为静态资源服务器
在Nginx中保存图片,文件视频等静态资源,经常和FastDFS组合使用。
补充:
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。用