目录
Nginx场景实践_代理服务
Nginx场景实践_反向代理
Nginx场景实践_负载均衡
Nginx场景实践_负载均衡算法
Nginx场景实践_代理服务
正向代理
正向代理,是在用户端的。比如需要访问某些国外网站,我们可能需要购买vpn。
正向代理最大的特点:
1 客户端非常明确要访问的服务器地址;
2 服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;
3 正向代理模式屏蔽或者隐藏了真实客户端信息。
反向代理
客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时请求的来源 也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色。 反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
实时效果反馈
1. 正向代理用途描述错误的是_____。
A 可以做缓存,加速访问资源
B 对客户端访问授权,上网进行认证
C 负载均衡
D 为在防火墙内的局域网客户端提供访问Internet的途径,如 google网站
Nginx场景实践_反向代理
单体架构
单体架构问题:
- 复杂性高:模块多,模块边界模糊,代码质量参差不齐,每次修改代码都心惊胆战
- 技术债务:随着时间的推移,需求变更和人员迭代,会逐渐形成应用程序的技术债务,并且 越积越多
- 部署频率低:随着代码增多,构建和部署的时间也会增多,每次部署都要重新部署整个项目 可靠性差:某个应用有bug,可能会导致整个应用崩溃
- 扩展能力受限:单体应用只能作为一个整体应用进行扩展,无法根据业务模块的需要进行伸缩
反向代理设置指令
学习Nginx服务器的反向代理服务,要涉及与后端代理服务器相关 的配置指令比较重要,是为客户端提供正常Web服务的基础,大家 应该熟练掌握尤其是proxy_pass指令,在实际应用过程中需要注意 一些配置细节,需要小心使用。
proxy_pass指令
该指令用来设置被代理服务器的地址,可以是主机名称、IP地址加端口号等形式。
语法结构:
proxy_pass URL;
参数:
URL为要设置的被代理服务器的地址,包含传输协议、主机名称或P地址加端口号、URI等要素。传输协议通常是"http"或 者"https://"。
示例:
server{
....
listen 80;
server_name *.*;
location / {
proxy_pass http://192.168.66.101:8080;
}
}
实时效果反馈
1. 在Nginx技术中实现反向代理核心指令__。
A proxy_pass
B listen
C location
D upstream
2. 下列描述反向代理优点错误的是_____。
A 提高访问速度
B 防火墙作用
C 增加并发
D 处理连接数量不大时,每次连接消耗少量资源
Nginx场景实践_负载均衡
什么是负载均衡
负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。
没有负载均衡的 web 架构
有负载均衡web架构:
upstream指令
upstream块不属于虚拟主机,只能在http块里配置,它定义了在反 向代理时Nginx需要访问的后端服务器集群和负载均衡策略。
语法格式:
upstream back_end { # upstream需要一个名字
server 192.168.66.100 max_conns=2 fail_timeout=1s;
server 192.168.66.101 weight = 1;
server 192.168.66.102 weight = 1;
}
server{
lisetn 80;
server_name *.*;
location / {
proxy_set_header Host $host; #转发原始请求的host头部
proxy_pass http://back_end; #转发到upstream块定义的服务器集群。
}
}
upstream参数:
- max_conns 节点的最大连接数
- slow_start 缓慢启动时间
- down 节点下线
- backup 备用节点
- max_fails 允许的最大失败数
- fail_timeout 超过最大失败数后的等待时间
实时效果反馈
1. 负载均衡主要解决____问题。
A 高可用
B 高性能
C 安全
D 高并发
2. 实现负载均衡机制核心指令是____。
A location
B upstream
C proxy_pass
D cache
Nginx场景实践_负载均衡算法
轮询(默认)
轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。
适用于后台机器性能一致的情况。 挂掉的机器可以自动从服务列表中剔除。
upstream bakend {
server 192.168.0.14;
server 192.168.0.15;
}
轮询加权重
根据权重来分发请求到不同的机器中,指定轮询几率,weight和访 问比率成正比,用于后端服务器性能不均的情况。
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
IP_hash
每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访 问一台后端服务器,并且可以有效解决动态网页存在的session共享 问题。俗称IP绑定。
upstream backServer{
server 127.0.0.1:8080 ;
server 127.0.0.1:8081 ;
ip_hash;
}
server {
listen 80;
server_name www.itmayiedu.com;
location / {
### 指定上游服务器负载均衡服务器
proxy_pass http://backServer;
index index.html index.htm;
}
}
url_hash
按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软 件包。
fair
比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服 务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身 不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。
实时效果反馈
1. Nginx负载均衡默认的算法是______。
A fair
B ip_hash
C url_hash
D 轮询