nginx http_realip_module 被高级安全防护设备代理后,获取用户端真实IP,并通过真实IP负载均衡转发到后端应用

场景:

在甲方的环境现场,原有环境是从防火墙映射下来的公网IP到我的nginx负载均衡,nginx到后端多台realserver应用服务器,使用上并未发现异常情况,负载均衡的分发也算正常,nginx采用的ip_hash的算法进行调度。但是机房因为等级保护原因,使用了某厂家的7层防护硬件设备(其实也是一个代理服务),导致我nginx上识别的IP均为代理设备的IP,此时,因为nginx识别客户端IP为硬件防护设备的,导致不再向其他real server应用服务器调度分发,导致单点压力过大,其他主机闲置。

与厂商沟通无法解决该问题,后沟通想从nginx上入手解决,考虑采用http_realip_module模块告诉nginx客户端的真实IP存放在real_ip_header里X-Forwarded-For请求头中,让nginx能识别客户端真实IP,恢复nginx的调度分发能力。

nginx的主要配置

set_real_ip_from 硬件防护设备的IP(nginx识别的真实来访iP);
real_ip_header X-Forwarded-For;
real_ip_recursive on;

经过测试和上线使用,已经满足业务需求。

猜你喜欢

转载自www.cnblogs.com/ddzfeng/p/12306331.html