当前位置: 首页 > wzjs >正文

装修公司网站建设方案腾讯广告推广平台

装修公司网站建设方案,腾讯广告推广平台,网站建设公司赚钱吗,成都建工雅安建设有限责任公司网站现象 领导反馈生产环境的用户ip有问题。登陆到这个页面,发现是所有的用户ip都是172.30.94.97,这是个内部网络ip. 排查过程 1 登陆到应用前端nginx, 查看nginx的请求日志 172.30.94.97 - - [17/Jul/2024:02:02:54 0000] "POST /***/n…

现象

领导反馈生产环境的用户ip有问题。登陆到这个页面,发现是所有的用户ip都是172.30.94.97,这是个内部网络ip.

排查过程

1 登陆到应用前端nginx, 查看nginx的请求日志

172.30.94.97 - - [17/Jul/2024:02:02:54 +0000] "POST /***/notify/my-page HTTP/1.1" 200 182 "/report/home?type=2&id=2612&lang=zh_CN" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36" "10.72.44.200"
172.30.94.97 - - [17/Jul/2024:02:02:54 +0000] "POST /***/notify/my-page HTTP/1.1" 200 182 "/home?lang=zh_CN" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "10.49.140.102"
172.30.94.97 - - [17/Jul/2024:02:02:56 +0000] "POST /***/msg/notify/my-page HTTP/1.1" 200 59 "/user/message/info?lang=zh_CN" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" "10.13.52.192"

发现第一列展示的ip正好是我们的Java应用代码拿到的iP,而真实的ip展示在最后一列

2 查看nginx的日志输出格式。第一列取的是remote_addr变量,说明这个变量是有问题的 。我们要取的是最后一列http_x_forwarded_for变量

log_format  main   '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';

3 查看Java代码获取客户ip的逻辑。Java代码从6个Header变量中依次找可以用的ip。

    public static String getClientIP(HttpServletRequest request, String... otherHeaderNames) {String[] headers = new String[]{"X-Forwarded-For", "X-Real-IP", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR"};if (ArrayUtil.isNotEmpty(otherHeaderNames)) {headers = (String[])ArrayUtil.addAll(new String[][]{headers, otherHeaderNames});}return getClientIPByHeader(request, headers);} 

4 查看nginx传递过来了哪些Header变量。nginx传递过来了X-Real-IP和X-Forwarded-For,其中X-Real-IP取的是有问题的remote_addr,正好我们Java代码取到的是这个变量。X-Forwarded-For没有值。

location ~ ^/(admin-api|rpc-api)/ {client_max_body_size 32m;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://***:30001;
}

5 根据第二步的分析,将remote_addr修改为http_x_forwarded_for
6 重启nginx,问题解决

K8S网络拓扑

在这里插入图片描述
所有的外部流量一定会通过一个ingress controller进入到K8S的内部。ingress controller的一个常见实现是Nginx,正好我们的k8s选择的就是Nginx。也就是说我们的业务前端nginx前面还有一个nginx。所以我们的前端nginx的remote_addr拿到的是k8s入口ingress的内部ip地址。

总结

用户请求经过两层nginx转发才到达后端java业务应用。remote_addr仅存储上一个转发节点的ip,所以我们的业务应用一直拿的是ingress的ip。http_x_forwarded_for存储的是原始用户的请求ip。

http://www.dtcms.com/wzjs/147807.html

相关文章:

  • 安徽城乡建设厅网站证件天津短视频seo
  • 建个人网站百度云官网
  • 网络舆情应急处置预案上海优化排名网站
  • 新会网站建设淘宝推广费用一般多少
  • 网站公司怎么做的好处宁德市人力资源和社会保障局
  • 做网站用那个浏览器神马关键词快速排名软件
  • html网站开发心得武汉大学人民医院
  • 土石方工程网站平台推广引流
  • html5 后台网站模板百度搜索词排名
  • 网站流量真难做千锋教育培训机构可靠吗
  • 亚马逊站外deal网站重庆企业免费建站
  • 清远做网站哪家好深圳seo招聘
  • 重庆在线官网百度seo技术
  • 网站建设流程有哪些百度推广客服电话人工服务
  • 如何网站公司小程序怎么查搜索关键词排名
  • 汉邦未来网站建设网站点击量统计
  • 网站后台基本功能营销网络图
  • 自己做整个网站的流程疫情最新政策最新消息
  • 视频封面制作网站网站推广关键词工具
  • 网站 刷流量 SEO现在最火的推广平台有哪些
  • 快对作业小程序入口在线seo推广软件
  • 中山外贸网站建设线上营销公司
  • 沧源网站建设长沙专业网络推广公司
  • 网站开发交接资料邢台网站公司
  • android开发工具箱合肥网络优化推广公司
  • 网站开发需要什么资质今日新闻最新消息
  • 保定网站制作哪家好建设seo评测论坛
  • 网站开发西安中软网站排名监控工具
  • 长春火车站电话人工服务品牌活动策划
  • 沌口做网站国内十大软件培训机构