nginx ip hash 不生效问题排查

回复 收藏

 问题: 公司由前端nginx 做静态页面同时 通过 url 匹配转发代理到本机后端的两个tomcat 服务(仅做post请求),但是出现了压力都在一台的问题。

排查思路: 1.检查nginx 和 tomcat 日志 发现记录的 remote_addr 都是127.0.0.1 ,排查nginx 配置,其中已经加入了x_forwarded_for 等头部信息,加入信息无误。并搭建虚拟机进行简单测试,记录没问题,排除nginx配置方面问题。

                   2.因为是该页面仅做post 方法,怀疑是post 方法导致记录有误。尝试自己搭建虚拟机尝试相同配置文件进行post 也能正常记录日志,排除post方法问题。

                   3.怀疑是网页程序有问题可能是自己构建了请求,后跟开发沟通,了解到该页面的post 请求确实是由程序自己构建,那么源ip肯定是自己,找到原因。

总结:通过层层排除问题原因,才找到了问题根源,前后花了我2天时间各种查找记录日志出错的原因。nginx 作为那么流行的开源软件,设计方面已经相当成熟,出现首要分析日志,找出问题点,不要怀疑nginx的基础功能,有疑问拿出证据让开发的同事配合解决,节约时间,少绕弯路。i_f02.gif

2018-05-15 10:16 举报
已邀请:
0

风华月

赞同来自:

补充:

  

  问题: 因为程序自己构建请求源ip都是自己导致出现ip hash 失效问题。

  想法: 前端的nginx 会将x-forwarded-for 传给后端的tomcat,tomcat构建请求的时候携带了这个头部信息,就在思考nginx是否能根据 x-forwarded-for 头部信息来实现哈希。

  解决方案: 尝试在网上搜索资料,进行虚拟机实验,nignx 其实是支持各种头部hash的,完美解决该问题。


  配置文件如下:  

    upstream upstream1{

        hash $http_x_forwarded_for;

        server 127.0.0.1:8097;

        server 127.0.0.1:8093;

    }


回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: