在apache+WebLogic整合系统中,apache会对request对象进行再包装,附加一些WLS要用的头信息。这种情况下,直接用request.getRemoteAddr()是无法取到真正的客户IP的。
  apache会增加下列头信息:
  X-Forwarded-For=211.161.1.239
  WL-Proxy-Client-IP=211.161.1.239

所取得客户的IP需要这样:

String IP=request.getHeader("X-Forwarded-For");
if(IP == null || IP.length() == 0) {
IP=request.getHeader("WL-Proxy-Client-IP");
}
if(IP == null || IP.length() == 0) {
IP=request.getRemoteAddr();
}

  或者也可通过WebLogic的设置直接能过request.getRemoteAddr();取得客户的IP。
  在WebLogic console
  domain->servers->servername->General ->Advanced Options ->
  WebLogic Plug-In Enabled
  Specifies whether this server uses the proprietary WL-Proxy-Client-IP header. (This is needed only when WebLogic plugins are configured.)
  但是如果apache设置的是反向代理这样就不行了,因为apache不会向heaer写入WL-Proxy-Client-IP的信息。只能通过第一种方法解决。
更加复杂的情况是,请求访问F5,F5负载均衡16台apache,然后转到后台的4台weblogic,weblogic之间做集群。
现在有一个问题就是在weblogic上无法获取客户的真实IP地址了。看到网上有很多相关帖子是介绍apache和weblogic集成使用,可以利用http头里X-Forwarded-For这个值取出用户ip地址。但是在我这个环境下X-Forwarded-For值指向F5的地址,初步估计问题应该在F5的配置上。
经过查找F5的资料,发现http profile里有一项设置是Insert XForwarded-For,将这个功能启用,发现weblogic已经可以取到用户的ip地址了。
Insert XForwarded-For指定一个可以供LTM 系统在HTTP 请求中插入的XForwarded-For标头,以便与连接Pool使用。此特性可以将客户机的IP地址作为XForwarded-For标头的值进行添加。

转载于:https://www.cnblogs.com/exmyth/archive/2012/12/13/2816689.html

apache+weblogic获取客户端访问的真正ip相关推荐

  1. nginx获取客户端请求的真实IP

    客户端通过nginx代理访问后端jetty服务器时,后端服务器收到的请求信息中只有nginx代理的IP信息,无法看到client的真实IP, 所以nginx需要获取客户端请求头的真实IP地址进行传递, ...

  2. HTTP userAgent 获取客户端访问途径:手机,pc,微信.....

    附: 如果前端使用的是Layui框架,使用如下代码,即可获取到设备信息: var device = layui.device();console.log(device); {os: "win ...

  3. linux查看ip访问日志文件,linux分析apache日志获取最多访问的前10个IP

    apache日志分析可以获得很多有用的信息,现在来试试最基本的,获取最多访问的前10个IP地址及访问次数. 既然是统计,那么awk是必不可少的,好用而高效. 命令如下: awk '{a[$1] += ...

  4. 获取客户端ip_获取客户端访问真实IP

    通常,当 Kubernetes 集群内的客户端连接到服务的时候,是支持服务的 Pod 可以获取到客户端的 IP 地址的,但是,当通过节点端口接收到连接时,由于对数据包执行了源网络地址转换(SNAT), ...

  5. PHP获取客户端访问的IP来源

    将文件保存为 ip.php 格式 客户端访问  http://你的服务器地址/ip.php <?php echo getip();function getip() {if (getenv(&qu ...

  6. 如何控制客户端访问oracle9i的ip地址

    在NET8采用TCP/IP协议时,在oracle9i服务器的sqlnet.ora中进行下列参数的设置可以限制或允许用户从特定的客户机连接到数据库中. tcp.validnode_checking=ye ...

  7. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  8. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP。

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  9. java h5获取ip,websocket中获取客户端通信的真实IP

    一些场景中,我们要对websocket客户端的ip进行校验,如果是黑名单,或者不被允许的则不应该让他访问业务系统. 笔者本地使用了两个Websocket技术原型,一个基于Netty封装的Websock ...

最新文章

  1. 程序员必备注释模板---佛祖保佑
  2. .gitmodule中没有为非子模块的路径找到子模块映射
  3. 美国国家航空航天局宣布发现地球2.0
  4. MySQL HINT:Straight_JOIN
  5. Zabbix介绍及安装部署
  6. easyexcel 导入指定_阿里巴巴EasyExcel使用(3)-导入
  7. 学会c对java帮助大_20155206赵飞技能获取经验,C语言学习感想与对JAVA的学习目标...
  8. 实用工具【SqlPrompt】 【Subline】 【XMind】 【PhotoShop】 【TakeColor】 【Q+】本次只讨论SqlPrompt...
  9. 计算机通过注册表修改摄像机设备的名称
  10. 专利交底书怎么写 -
  11. c语言计算音频分贝函数,获取PCM音频数据的声音分贝值
  12. Qt编写地图综合应用12-路线查询
  13. 论文阅读:GeoTransformer
  14. 什么是循环依赖?Spring如何解决循环依赖?
  15. PMOS与NMOS的区别
  16. 有没有哪位同志看看哪个地方出错了
  17. C语言1013山东理工大学试题,流体试题真题山东理工大学3页
  18. 深度学习以最佳纳米尺度分辨率解决重叠单个分子的3D方向和2D位置,生成蛋白质图片...
  19. 职场中生存的头等大事:保持尊重
  20. windows server : windows server backup 服务(自动定时备份,一次备份,恢复),安装搭建恢复(图形化)

热门文章

  1. ulp java_java.lang.Math.ulp(float f)方法实例
  2. java排序链表冒泡排序_Java中的冒泡排序
  3. Java棘手面试问题
  4. python时间模块倒计时_Python时间模块
  5. Java关闭挂钩– Runtime.addShutdownHook()
  6. jsf标签_JSF Facelet标签示例教程
  7. maven依赖冲突解决_Maven依赖树–解决冲突
  8. 什么才是Web前端开发的必备核心技能?
  9. “猿式浪漫”:Java小白也能写出的表白程序
  10. 想学习C语言,学习路线是什么?