赞
踩
目录
nginx参考网站:Using nginx as HTTP load balancer
2、使用nginx plus自带的 Active Health Checks 主动健康检查
四、实现客户端真实地址功能,如何告诉我们的 Web服务器 到底是哪个Client客户端访问了它?
为什么我们的Web服务器不知道我们的Client用户端的IP地址呢?
1、在负载均衡器LB上修改HTTP请求报文头部字段,添加一个X-Real-IP字段
2、在后端real server(Web服务器)上添加这个X-Real-IP字段
3、刷新用户的浏览器,查看后端Web服务器是否运行正常,如果正常,则到Web服务器上对访问日志进行动态观察,检查是否存在包含着用户机IP地址的日志出现
nginx中的反向代理实现包括主动(或被动)服务器健康检查。如果来自特定服务器的响应失败并出现错误,nginx将把该服务器标记为失败,并在一段时间内尽量避免为后续入站请求选择该服务器。
max_fails指令设置在fail_timeout期间与服务器通信的连续失败次数。缺省情况下,max_fails值为1。当该值设置为0时,将禁用此服务器的健康检查。fail_timeout参数还定义了服务器被标记为失败的时间。在服务器故障后的fail_timeout时间间隔后,nginx将开始优雅地探测服务器的活动客户端请求。如果探测成功,则该服务器将被标记为活动服务器。
(主动检测需要购买nginx plus软件。)
nginx plus : 是nginx的一个插件,nginx额外提供的一个软件,这个软件是需要付费购买的,但是这个软件的功能比较好,很实用。
网址:Configuring NGINX & NGINX Plus as Load Balancers
我们可以免费试用30天的时间,需要填写下面的信息
LB每隔一段时间就会去检测下后端的real server的状态,不管是否由client发送请求过来,都会去检查
配置方法:
(不需要用钱,可以在开源的nginx上实现)
被动检测步骤:user --》请求 --》 LB负载均衡 --》 转发请求 --》real server(Web)
配置如下图所示:
因为在数据包在经过LB负载均衡器的时候,负载均衡器对数据包进行了NAT网络地址转换,将数据包中的TCP/IP协议头部字段中的源IP地址转换为了自己的IP地址,目的IP地址转换为了需要访问的Web服务器的IP地址,从而导致我们的Web服务器不知道到底是哪个Client访问了它,只知道LB负载均衡器的IP地址。
因此我们不能通过网络层、传输层(TCP/IP协议)告知我们的Web服务器到底是谁访问了它,但是我们可以通过 应用层 的HTTP协议请求包携带Client客户端的IP地址发送给Web服务器,然后我们可以通过后端去查看Web服务器接收到的HTTP协议请求包从而得到Client客户端的IP地址。
在nginx负载均衡器的配置文件的http协议中修改如下:
解释:
因此我们需要对三台nginx-Web服务器进行添加
(详细请查看:(37条消息) nginx负载均衡器的部署_Claylpf的博客-CSDN博客)
我以其中一台为例:
在nginx-Web3服务器的配置文件中的http协议头部log_format 里面添加 “$http-x-real-ip”
完整添加图:
完成后保存,刷新nginx服务(./nginx -s reload)一定要哦!!
当然我们也可以不用在nginx-Web服务器里配置上面的$http-x-real-ip,但是我们需要:
动态查看nginx-Web3的访问日志:
日志中出现了客户端的IP地址,说明完成客户端真实地址的配置了 。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。