Nginx 反向代理(一)
网关中间件 Nginx
一、Nginx 核心概念
什么是 Nginx?
Nginx 是高性能的 HTTP 和反向代理的服务器同时也是邮件代理服务器。
官方地址:https://nginx.org/
什么是反向代理服务器
没有 Nginx 之前我们的请求是从客户端直接到后端服务,后端服务器响应后直接返回客户端,如图:
现在是 Nginx 代理后端服务器来接收客户端发送的请求,这就是 Nginx 的反向代理,如图:
二、Nginx 的应用场景
应用场景
Nginx 主要应用在集群系统中。
三、Nginx 项目落地
查询商品为例落地,启动两个实例,一个端口号:5000,另一个端口号为:5001,如图:
查询商品的项目新建一个 API 控制器【ProductController】,代码如下:
新建一个商品领域模型类【Product】,代码如下:
第二个实例,端口:5001
Nginx 使用的是 Windows 版为例,后期会出 Linux 版本,Windows 使用的版本是:nginx-1.20.0,
百度网盘盘下载地址:
链接:https://pan.baidu.com/s/1IZ-GWD3Al_QwqsJ-is9HqA 提取码:g2wt
添加配置文件信息
修改 Nginx 配置文件信息 (nginx.conf),配置文件文件路径:\nginx-1.20.0\conf
启动 Nginx
先进入 Nginx 根目录下
启动命令
请求代理服务器,如图:
刷新了三次请求 Nginx 服务器,请求结果,如图
四、Nginx 的运行原理
Nginx 是模块化设计,里面包括很多模块,其中核心模块:邮件模块、HTTP 模块、事件模块
如图:
配置文件
全局模块和事件模块 【核心模块】
通信过程 多进程模型
如图:
查看任务管理器有两个 Nginx 进程,一个是主进程,另一个是工作进程,主进程的作用:接收客户端发送过来的请求,然后主进程将请求给工作进程,工作进程负责和后端服务器连接。
优点:
高效的利用 CPU 资源
其中的某个进程宕机了,可以分配个其他进程
这个进程的数量可以在 nginx 配置文件中配置,代码如下:
工作进程如何与后端服务器建立连接?
是靠事件驱动(消息驱动)建立连接,如图:
HTTP 虚拟主机,配置文件中的 sever 就是虚拟主机
配置多个虚拟主机,可以代理多个应用。
反向代理
对应用代理就是反向代理。
作用:
为了负载均衡
后端服务的安全性得到了保障,因为是暴露的 nginx 代理服务器的地址。
五、Nginx 的负载均衡
作用:
将访问流量均分到指定的后端服务实例。
配置文件代码,如下
负载均衡算法 均分流量
轮询算法 默认算法
缺陷:
请求堆积,会堆积一些请求在性能差的服务器上。
方案:最小活跃数算法
最小活跃数算法【自动识别请求能力 推荐】
条件
least_conn;
配置代码如下:
负载均衡失败重试
条件
max_fails=2 fail_timeout=10s;
代码如下:
备机
条件
backup
代码如下
版权声明: 本文为 InfoQ 作者【@@神农】的原创文章。
原文链接:【http://xie.infoq.cn/article/b8036cf54fdf7eed23c81ba47】。未经作者许可,禁止转载。
评论