如何在tomcat访问日志中记录Client IP和X-Forwarded-For IP

2024-01-17

如何在 tomcat 访问日志中记录 Client IP 和 X-Forwarded-For IP。

我正在使用 %{X-Forwarded-For}i,如果我通过负载均衡器访问,它会记录实际的客户端地址。但如果我直接访问 tomcat 实例,则不会记录实际的客户端地址。有没有办法在这两种情况下显示实际的客户端 IP 地址?


From http://www.techstacks.com/howto/configure-access-logging-in-tomcat.html http://www.techstacks.com/howto/configure-access-logging-in-tomcat.html:

如果您运行的 tomcat 版本高于 6.0.21 或 tomcat 7,则可以利用新的远程 IP Valve。对于访问日志记录,此阀的优点在于,如果在 X-Forwarded-For 标头中传递了 IP 地址,它将自动将客户端 IP 与通过 X-Forwarded-For 标头传递的 IP 地址进行交换。加载它非常容易。只需在 AccessLogValve 声明之前将 org.apache.catalina.valves.RemoteIpValve 添加到 server.xml 中即可。例如:

 <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

  <!-- Remote IP Valve -->
    <Valve className="org.apache.catalina.valves.RemoteIpValve" />

  <!-- Access log processes all example.
    Documentation at: /docs/config/valve.html -->

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
    prefix="localhost_access_log." suffix=".txt"
    pattern="combined" resolveHosts="false"/>
  -->
</Host>

如果您使用的 tomcat 6 版本早于 6.0.21,并且您想要存储 X-Forwarded-For IP 地址,那么您可以修改 AccessLogValve 的模式属性。您需要删除“通用”或“组合”模式并将其替换为以下模式之一:

Common Log Format: %{X-Forwarded-For}i %l %u %t "%r" %s %b
Combined Log Format: %{X-Forwarded-For}i %l %u %t %r %s %b %{User-Agent}i %{Referer}i

RemoteIP Valve 确实解决的主要问题是您只能在日志中获得 X-Forwarded-For 地址。如果您直接访问应用服务器,绕过在请求中插入 X-Forwarded-For 标头的设备,您将不会记录 IP 地址。您仍然会记录一个请求——您只是不知道它来自哪里。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在tomcat访问日志中记录Client IP和X-Forwarded-For IP 的相关文章

随机推荐

  • 了解 MongoDB Aggregate 和 GroupBy

    我正在尝试在 MongoDB 中执行查询 首先按 id 进行分组 然后按降序排序 我这里有一个函数式 LINQ 表达式 var list this GetPackages ToList list list OrderByDescending
  • 为什么在使用自定义元素时会出现内部 Dartium 异常?

    我在控制台中看到此错误 Exception InvalidStateError Internal Dartium Exception PolymerDeclaration registerType package polymer src d
  • Maven:附加多个工件

    我有一个 Maven 项目 它使用一些自定义 jar 在任何存储库中都找不到 为了将它们与 Maven 构建一起添加 我在 Maven 中使用 Attach artifact 目标 以下是我的 pom 文件
  • 如何漂亮地打印 Golang 结构? [复制]

    这个问题在这里已经有答案了 我正在解组一个结构 我希望它以格式化的方式打印它 我的代码 https play golang org p D0KwGP6Cxa0 https play golang org p D0KwGP6Cxa0 当前产生
  • 宁静的API服务

    我正在寻找一项服务 可以用来调用基于 Web 的 REST API 基本上我想在 app init 上启动一个服务 然后我希望能够要求该服务请求一个 url 并返回结果 与此同时 我希望能够显示进度窗口或类似的东西 我目前已经创建了一个使用
  • 用酶测试连接的组件

    我正在学习采取本次测试课程 https www udemy com react testing with jest and enzyme 通过设置来测试连接的组件store factory测试助手 创建一个与我们商店的配置相匹配的测试商店
  • 如何向 javascript 类添加回调函数?

    javascript 中的以下代码给了我错误 this callback 不是一个函数 function ajaxRequest var httpObject this open open this callback function fu
  • elasticsearch允许具有不同身体数据的重复ID

    我目前正在尝试将我们的 elasticsearch 数据迁移到 2 0 兼容 即 字段名称中没有点 为从 1 x 升级到 2 x 做准备 我编写了一个程序 它 批量 运行位于单节点集群中的数据 并重命名字段 使用批量 API 重新索引文档
  • 获取 .NET Core JSON Body 作为动态对象

    我的 ASP NET Core 端点接受 JSON 形式作为其输入 并调用需要动态参数的方法 我试图像这样调用该方法 HttpPost public IActionResult InitializeAction FromBody dynam
  • iPad Safari 将鼠标事件映射到图像映射中的触摸事件

    我的网站广泛使用图像地图 这些图像是中世纪手稿的页面 AREA 标签的 mouseOver 事件附加了一个工具提示 它显示了鼠标悬停在其上的行的古代文字的现代印刷转录 我刚刚在苹果商店的 iPad 上查看了我的网站 iPad 在很多方面使用
  • geom_boxplot():强制出现空级别

    我无法找到一种方法来要求 ggplot2 在箱线图中显示空级别 而不用实际缺失值填充我的数据框 这是可重现的代码 fake data dftest lt expand grid time 1 10 measure 1 50 dftest v
  • 如何计算直线和曲线的最近点? ..还是曲线和曲线?

    给定直线和二次贝塞尔曲线的点 如何计算它们的最近点 INRIA 有一篇关于这个问题的科学论文 计算两条贝塞尔曲线之间的最小距离 http hal inria fr inria 00518351 en PDF here http hal in
  • 是什么导致桌面屏蔽图标覆盖在*某些*桌面上

    我有一个 C Builder Delphi 应用程序 它具有作为资源嵌入的以下清单
  • 检测django模型中的HOST域名

    在我的模型中 我想使用我在视图中使用的域名 HOST 由于 请求 对象 在视图中这是可行的 但我该怎么办 这个模型方法 哪些不使用 HttpRequest 对象 现在我在 settings py 中设置一个全局值 HOST 并使用它 但那就
  • 使用 lkJSON 解析 JSON

    我有一个 JSON 文件 需要解析并提取一个值 user pk 25025320 username instagram full name Instagram is private false profile pic url https i
  • 实现时在 typescript 中找不到 OnInit

    我正在使用 loginComponent 开发一个示例项目 当我尝试添加 OnInit 时 我需要在我的类中实现 OnInit 但出现以下错误 ts 找不到 OnInit 这是我的代码 export class loginComponent
  • JSON.Stringify 将引号添加到 ID [重复]

    这个问题已经存在了 我正在使用 JSON stringify 和 JSON parse 根据对在线数据库的更改来编辑我的 JSON 文件 一切正常 除了在数字周围加上引号 这会搞乱 JSON 文件 例如应该是 id 1但它正在打印出来 id
  • java SwingWorker.doInBackground() 不得访问 GUI 元素

    也许这很微不足道 我正在努力理解一个简单的文档摇摆工人 http docs oracle com javase 6 docs api javax swing SwingWorker html 这是复制粘贴的内容 Workflow Swing
  • 在 IValueConverter 类中定义属性

    我需要在转换器类中定义 DependencyProperty 因为我需要此数据来进行转换 并且此数据位于另一个对象中 而不是我绑定到的对象中 我的转换器类如下 public class LEGOMaterialConverter Depen
  • 如何在tomcat访问日志中记录Client IP和X-Forwarded-For IP

    如何在 tomcat 访问日志中记录 Client IP 和 X Forwarded For IP 我正在使用 X Forwarded For i 如果我通过负载均衡器访问 它会记录实际的客户端地址 但如果我直接访问 tomcat 实例 则