`
dongsw
  • 浏览: 81016 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

apache+weblogic获取客户端访问的真正ip

阅读更多
在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标头的值进行添加。
分享到:
评论

相关推荐

    东北证券投顾通Apache配置Weblogic负载均衡1

    ##### 2.1 获取Weblogic提供的Apache模块 1. **确定Weblogic安装路径**:通常Weblogic安装完成后,在`/server/plugin`目录下会提供一系列用于不同操作系统的Apache模块。 2. **选择正确的模块**:根据服务器的操作...

    Apache WebLogic9.2 安装及集群、SSL配置手册.pdf

    ### Apache WebLogic 9.2 安装及集群、SSL配置关键知识点 #### 一、Apache WebLogic 9.2 安装流程 ##### 1.1 创建用户 - **步骤**:首先需要在系统中创建一个用户,用于后续安装过程中的一些权限控制。通过点击...

    apache plugin

    3. **安全性**:Apache提供更强大的SSL加密和认证机制,可以对客户端请求进行预处理,减轻WebLogic Server的安全压力。 4. **缓存**:Apache可以配置为缓存静态内容,减少对WebLogic的请求,提高响应速度。 5. **...

    登录ip BS java

    在该对象中,我们可以找到多种获取客户端IP的方法。 描述中提到的代码片段是在尝试通过不同的HTTP头字段来获取IP地址: 1. `request.getHeader("x-forwarded-for")`: 这是常见的负载均衡器或反向代理服务器(如...

    javaweb(6)

    9. **获取客户信息**:`HttpServletRequest`的`getRemoteHost`方法用于获取客户端(用户)的主机名,对应选项A。`getRemoteAddr`通常用于获取IP地址。 10. **获取请求信息**:Servlet可通过`HttpServletRequest`的`...

    超级有影响力霸气的Java面试题大全文档

    但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、...

    linux系统中间件数据库安装大全

    网络配置用于获取IP地址和DNS信息,可以自动获取(DHCP)或手动设定。选择正确的时区以确保时间同步,接着设置root用户的密码,这是管理员账户,务必牢记。最后,根据应用需求选择软件安装包,例如选择服务器版,...

    h_JAVA 2应用编程150例.rar

    实例46 UDP与TCP/IP的简单应用 129 实例47 聊天室 131 实例48 浏览FTP 136 实例49 局域网广播 147 实例50 建立HTTP连接 151 实例51 迷你浏览器 152 实例52 扫描应用端口 154 实例53 监控HTTP 155 实例54 收发电子...

    Java机试相关题目34题

    17. jBuilder与WebLogic介绍:jBuilder是一个IDE工具,WebLogic是一个应用服务器。本题可能要求考生对这两个工具的基本功能和用途有所了解。 18. Velocity模板引擎使用:Velocity是一个模板引擎,可以用于Web开发中...

    JAVA上百实例源码以及开源项目源代码

    创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的...

    Web渗透面试面试集锦.docx

    8. **服务器容器(中间件)** 包括IS、Apache、nginx、Lighttpd、Tomcat、Weblogic和Jboss,它们各有不同的安全特性。 9. **操作系统识别** 通过大小写敏感性、TTL值等方法来确定目标服务器是Linux还是Windows。 ...

    java软件工程师简历

    - **Java应用服务器**: 如BEA WebLogic和Apache Tomcat,用于部署和运行Java应用程序。 4. **设计模式与系统架构** - **常见设计模式**: 如Factory、Singleton、MVC等,这些模式可以提高代码的复用性和可维护性。...

    java应用软件程序设计

    525 实例143 安装配置Tomcat 526 实例144 安装配置Apache 528 实例145 安装配置WebLogic 529 实例146 整合Tomcat与IIS 531 实例147 整合Tomcat与Apache 532 实例148 整合JBuilder与WebLocig 533...

Global site tag (gtag.js) - Google Analytics