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

聊一下java获取客户的ip

有一个很基础的功能,就是需要在后端记录用户请求的ip,一般来说,项目都会使用nginx负载,需要在nginx配置中加入一些功能

location /xxx{proxy_pass http://gateway;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;add_header Access-Control-Allow-Methods *;add_header Access-Control-Max-Age 3600000;add_header Access-Control-Allow-Credentials true;add_header Access-Control-Allow-Origin $http_origin;add_header Access-Control-Allow-Headers $http_access_control_request_headers;if ($request_method = OPTIONS ) {return 200;}}

这个简单来说就是在请求头里加入X-Real-IP参数等等
然后我们的后端代码可以这样去获取

import javax.servlet.http.HttpServletRequest;public String getClientIp(HttpServletRequest request) {String ip = request.getHeader("X-Forwarded-For"); // 常见代理服务器传递的 IP 头if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP"); // Apache 代理}if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP"); // WebLogic 代理}if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_CLIENT_IP"); // 一些旧代理}if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_X_FORWARDED_FOR"); // 另一种代理头}if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr(); // 直接获取远程地址(可能是代理 IP)}// 处理多个 IP 的情况(X-Forwarded-For 可能包含多个 IP,如 "client, proxy1, proxy2")if (ip != null && ip.contains(",")) {ip = ip.split(",")[0].trim();}return ip;
}

最后的最后,如果项目没有使用nginx负载,这段java代码也可以直接使用,但是是k8s那你就得自己找其他方案 了。。

http://www.dtcms.com/a/578976.html

相关文章:

  • 蓝天使网站建设推广重庆建设工程施工安全管理信息网
  • Linux 优先级反转问题详解与处理方案
  • 网站文章在哪发布做seo襄阳网站建设外包
  • STM32H743-ARM例程39-SD_IAP
  • 域名备案 个人 网站基本信息查询如何做淘宝返利网站
  • 51单片机定时器函数分享(8051汇编)
  • 自建督学习——BERT(第二十二周周报)
  • 临湘网站建设2022年百度seo
  • 公司做年审在哪个网站网络安全培训最强的机构
  • (139页PPT)某著名企业智改数字化转型升级汇报方案(附下载方式)
  • 可信网站认证有什么用合肥房产网新楼盘价格
  • 多多返利网站建设杭州效果图制作
  • 德阳做网站公司网上营销方法
  • 【产品研究】MyoSuite:面向肌肉骨骼运动控制的富接触仿真套件 总结
  • Java 集合框架:HashMap 与 Map 体系深度解析
  • 网站建设运营费用预算wordpress禁止留言
  • 制作的大型网站多少钱免费搭建微商城
  • 怎样克隆别人的网站wordpress搭建cms网站
  • 校园二手网站的建设方案无货源电商怎么找货源
  • leetcode 3607. 电网维护 中等
  • 【分层强化学习】#1 引论:选项框架与半马尔可夫决策过程
  • 鄂州网站建设哪家专业高端网站设计欣赏
  • 上海专业做网站公司有哪些网站域名邮箱
  • 如何做销售直播网站国外免费服务器申请
  • 从“零”构建零售EDI能力:实施路径与常见陷阱
  • 从零开始刷算法-单调栈-每日温度
  • 建设银行网银网站h5制作网页
  • 免费金融发布网站模板wordpress移动端顶部导航栏
  • 成都公司做网站西安做网站公司玖佰网络
  • 网站制作交易流程网站建设方案平台选择