nginx负载均衡器--健康检测 | 实现客户端真实地址功能

文章详细介绍了如何使用nginx进行HTTP负载均衡,包括主动和被动健康检查的配置,以及如何在负载均衡器中添加X-Real-IP字段以传递客户端真实地址给Web服务器。

目录

nginx参考网站:Using nginx as HTTP load balancer

一、什么是健康检查?

二、如何实现nginx负载均衡的主动检测呢?

步骤:

1、安装nginx plus软件

2、使用nginx plus自带的 Active Health Checks 主动健康检查

三、如何实现nginx负载均衡的被动检查呢?

1、什么是被动检测,被动检测的步骤是什么?

​编辑

2、nginx配置文件中添加配置参数的解释 :

四、实现客户端真实地址功能,如何告诉我们的 Web服务器 到底是哪个Client客户端访问了它?

为什么我们的Web服务器不知道我们的Client用户端的IP地址呢?

步骤规划图:

步骤:

1、在负载均衡器LB上修改HTTP请求报文头部字段,添加一个X-Real-IP字段

2、在后端real server(Web服务器)上添加这个X-Real-IP字段

3、刷新用户的浏览器,查看后端Web服务器是否运行正常,如果正常,则到Web服务器上对访问日志进行动态观察,检查是否存在包含着用户机IP地址的日志出现


nginx参考网站:Using nginx as HTTP load balancer

一、什么是健康检查?

nginx中的反向代理实现包括主动(或被动)服务器健康检查。如果来自特定服务器的响应失败并出现错误,nginx将把该服务器标记为失败,并在一段时间内尽量避免为后续入站请求选择该服务器。

max_fails指令设置在fail_timeout期间与服务器通信的连续失败次数。缺省情况下,max_fails值为1。当该值设置为0时,将禁用此服务器的健康检查。fail_timeout参数还定义了服务器被标记为失败的时间。在服务器故障后的fail_timeout时间间隔后,nginx将开始优雅地探测服务器的活动客户端请求。如果探测成功,则该服务器将被标记为活动服务器。

二、如何实现nginx负载均衡的主动检测呢?

(主动检测需要购买nginx plus软件。)

步骤:

1、安装nginx plus软件

nginx plus : 是nginx的一个插件,nginx额外提供的一个软件,这个软件是需要付费购买的,但是这个软件的功能比较好,很实用。

网址:Configuring NGINX & NGINX Plus as Load Balancers

 我们可以免费试用30天的时间,需要填写下面的信息

2、使用nginx plus自带的 Active Health Checks 主动健康检查

LB每隔一段时间就会去检测下后端的real server的状态,不管是否由client发送请求过来,都会去检查

配置方法:

三、如何实现nginx负载均衡的被动检查呢?

(不需要用钱,可以在开源的nginx上实现)

1、什么是被动检测,被动检测的步骤是什么?

被动检测步骤:user --》请求 --》 LB负载均衡 --》 转发请求 --》real server(Web)

2、nginx配置文件中添加配置参数的解释 :

 配置如下图所示:

 

四、实现客户端真实地址功能,如何告诉我们的 Web服务器 到底是哪个Client客户端访问了它?

为什么我们的Web服务器不知道我们的Client用户端的IP地址呢?

因为在数据包在经过LB负载均衡器的时候,负载均衡器对数据包进行了NAT网络地址转换,将数据包中的TCP/IP协议头部字段中的源IP地址转换为了自己的IP地址,目的IP地址转换为了需要访问的Web服务器的IP地址,从而导致我们的Web服务器不知道到底是哪个Client访问了它,只知道LB负载均衡器的IP地址。

因此我们不能通过网络层、传输层(TCP/IP协议)告知我们的Web服务器到底是谁访问了它,但是我们可以通过 应用层 的HTTP协议请求包携带Client客户端的IP地址发送给Web服务器,然后我们可以通过后端去查看Web服务器接收到的HTTP协议请求包从而得到Client客户端的IP地址。

步骤规划图:

步骤:

1、在负载均衡器LB上修改HTTP请求报文头部字段,添加一个X-Real-IP字段

在nginx负载均衡器的配置文件的http协议中修改如下:

解释:

 

2、在后端real server(Web服务器)上添加这个X-Real-IP字段

因此我们需要对三台nginx-Web服务器进行添加

(详细请查看:(37条消息) nginx负载均衡器的部署_Claylpf的博客-优快云博客

我以其中一台为例:

在nginx-Web3服务器的配置文件中的http协议头部log_format 里面添加 “$http-x-real-ip”

完整添加图:

完成后保存,刷新nginx服务(./nginx -s reload)一定要哦!!

当然我们也可以不用在nginx-Web服务器里配置上面的$http-x-real-ip,但是我们需要:

 

3、刷新用户的浏览器,查看后端Web服务器是否运行正常,如果正常,则到Web服务器上对访问日志进行动态观察,检查是否存在包含着用户机IP地址的日志出现

动态查看nginx-Web3的访问日志: 

  日志中出现了客户端的IP地址,说明完成客户端真实地址的配置了 。

 

| 序号 | 知识点 | 说明 | | -- | -------------------- | ----------------------------- | | 1 | 反向代理原理 | 客户端请求先到 Nginx,再转发后端 | | 4 | 代理头与真实 IP | proxy_set_header 系列,传递真实客户端信息 | | 5 | 连接与超时 | 控制代理链路中的连接、请求、读取超时 | | 6 | 缓冲与流控 | 控制代理时的缓存、内存、磁盘使用策略 | | 7 | 大文件/上传 | 控制反向代理处理上传/下载的方式 | | 8 | 缓存(proxy_cache) | Nginx 代理后端的响应并缓存结果 | | 9 | SSL/TLS 终止 | Nginx 作为 HTTPS 终止层,解密后转发 | | 10 | WebSocket / HTTP2 支持 | 长连接或新协议代理能力 | | 11 | 限流、防刷 | Nginx 层对请求速率进行控制 | | 12 | 错误处理与重试 | 当代理失败时,重试或切换策略 | | 14 | 健康检查策略 | 代理后端节点的健康状态检测(与 upstream 有关) | | 15 | 日志与监控 | 反向代理层面的请求链路观测 | | 17 | 安全性注意 | 反向代理层常见安全防护措施 | | 序号 | 知识点 | 说明 | | -- | ------------ | ---------------------------------- | | 2 | upstream 与调度 | 定义后端服务器池、权重、超时、keepalive | | 3 | 负载均衡算法 | round-robin、least_conn、ip_hash 等策略 | | 13 | 上游连接复用 | upstream 长连接复用,优化后端负载性能 | | 14 | 健康检查策略(部分) | 检查 upstream 节点健康、fail_timeout 等 | | 20 | 典型配置模板 | 集合了 upstream + proxy_pass 的负载均衡架构 | | 序号 | 知识点 | 说明 | | -- | ------- | ----------------- | | 16 | 性能调优关键点 | 同时影响反向代理与负载均衡性能 | | 18 | 故障排查 | 两类功能都要用到 | | 19 | 生产小技巧 | 通用型经验,涉及代理、缓存、限流等 |
10-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值