Nginx-反向代理服务【理论知识】
1、Nginx代理服务基本概述
1.1、代理-解析
1.1.1、什么是代理
代理一词往往我们并不陌生,该服务我们常常用到。(比如:代理理财、代理租房、代理收货等等
1.1.2、图解
1.2、没有代理模式的情况
1.2.1、说明
在没有代理模式的情况下,都是客户端直接请求服务端,服务端直接响应客户端。
比如︰抖音在初创阶段时没太多人关注,单台服务器足以支撑业务运行。但随着事件推移,xx门事件的发生,引得抖音迅速蹿红,那么此时单台服务器难以支撑海量的用户请求,甚至一度造成服务瘫痪。
1.2.2、图解
1.3、有代理的的情况下
1.3.1、说明
在有代理模式的情况下,客户端往往无法直接向服务端发起请求,而是需要使用到代理服务,来实现客户端和服务通信。
1.3.2、图解
2、Nginx代理服务常见模式
2.1、正向代理
2.1.1、流程图
正向代理,(内部上网客户端 <--> 代理 -> 服务端)
2.1.2、用途1-客户端FQ
比如:科学的方式访问Google
2.1.3、用途2-客户端提速
比如:游戏加速器。
2.1.4、用途3-客户端缓存
比如︰下载资源,可以先查看代理服务是否有,如果有直接通过代理获取。
2.1.5、用途4-客户端授权
很多公司为了安全,连接外网需要通过防火墙,防火墙可以配置规则,允许谁可以上外网,谁不可以上外网。
2.2、反向代理
2.2.1、流程图
反向代理,用于公司集群架构中,客户端 -> 代理 <--> 服务端
2.2.2、用途1-路由功能
根据用户请求的URI调度到不同的功能的服务器进行处理。
2.2.3、用途2-负载均衡
将用户发送的请求,通过负载均衡调度算法挑选一台合适的节点进行请求处理。
2.2.4、用途3-动静分离
根据用户请求的URI进行区分,将动态资源调度至应用服务器处理,将静态资源调度至静态资源服务器处理。
2.2.5、用途4-数据缓存
将后端查询的数据存储至反向代理上缓存,可以加速用户获取资源。
2.3、正向与反向代理区别
区别在于形式上服务的"对象"不一样、其次架设的位置点不一样。
正向代理代理的对象是客户端,为客户端服务 反向代理代理的对象是服务端,为服务端服务
3、Nginx代理服务支持协议
3.1、支持代理的协议
Nginx作为代理服务,支持的代理协议非常的多,分别如下: 1、http/https 2、TCP/UDP 3、webSocket # http 1.1长链接通讯协议 4、GRPC # go语言远程过程调用 5、POP/IMAP # 邮件收发协议 6、RTMP # 流媒体、直播、点播
3.2、常用代理协议
|- ngx_http_fastcgi_module【php server】 http/https|- ngx_http_uwsgi_module【python server】 |- ngx_http_proxy_module【web server】 grpc |- ngx_http_v2_module【grpc server】 websocket |- ngx_http_proxy_module【websocket server】