Nginx配置ip_hash导致负载均衡算法失效解决方法

问题简述

由于公司的老项目用的架构属于前端后台在一起web项目,为了保证多机器部署session一致性,使用了比较简单暴力的 ip_hash处理,配置完发现服务器的所有请求只到了一台服务器,查看nginx的log日志,发现所有的clientIp都是127.0.0.1,找了问题所在。

  • nginx负载配置
    在这里插入图片描述
  • nginx的access.log日志内容如下
    在这里插入图片描述

解决问题

在http标签里面添加下面属性

http{
    #真实服务器上一级代理的IP地址或者IP段,可以写多行
    set_real_ip_from 127.0.0.1;
     #从哪个header头检索出要的IP地址
    real_ip_header X-Forwarded-For;
    # 递归排除IP地址,ip串从右到左开始排除set_real_ip_from里面出现的IP,如果出现了未出现这些ip段的IP,那么这个IP将被认为是用户的IP
    real_ip_recursive on;
}

在server标签里的location里面添加以下内容

server{
        location / {
	    #把原http请求的Header中的Host字段也放到转发的请求里
	    proxy_set_header Host $http_host;
	    #记录客户端请求的真实IP
	    proxy_set_header X-Real-IP $remote_addr;
	    #用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中
	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    #报头是用于识别协议(HTTP 或 HTTPS)
	    proxy_set_header X-Forwarded-Proto $scheme;
	    #客户端浏览器的主机名
	    proxy_set_header REMOTE-HOST $remote_host;
	    }
  }

重新启动nginx

查看日志发现获取的客户端IP已经正常了,问题解决。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皓亮君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值