tomcat采集阿里云slb真实客户端ip🫚
tomcat采集阿里云slb真实客户端ip🫚
一、在阿里云slb控制台配置采集信息
阿里云已默认开启通过X-Forwarded-For头字段获取客户端真实IP功能:
可按需勾选其他字段:
二、配置tomcat日志采集
打开server.xml文件,添加 “X-Forwarded-For”字段
具体配置如下:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%{X-Forwarded-For}i %h %u %t "%r" %s %b " />
配置完成后,需要重启tomcat。
三、扩展部分
可添加用户代理字段及上述勾选字段信息:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%{X-Forwarded-For}i %h %l %u %t "%r" %s %b %{User-Agent}i %{SLB-ID}i %{SLB-IP}i %{X-Forwarded-Proto}i %{X-Forwarded-Port}i %{X-Forwarded-Client-srcport}i" />
在上述示例中,%{User-Agent}i
、{SLB-ID}i
、%{SLB-IP}i
、%{X-Forwarded-Proto}i
、%{X-Forwarded-Port}i
和 %{X-Forwarded-Client-srcport}i
分别代表从请求头中获取 SLB 相关信息,并将其记录到访问日志中。
其他字段解释:
在Tomcat的AccessLogValve中,您可以使用多种格式化字符串来记录访问日志。除了%{X-Forwarded-For}i之外,以下是一些其他常用的格式化字符串: %a:远程IP地址。如果使用了RemoteIpValve,这将是X-Forwarded-For头中指定的客户端IP地址。 %A:本地IP地址。 %b:发送给客户端的字节数,不包括HTTP头的大小。 %B:发送给客户端的字节数,包括HTTP头的大小。 %h:远程主机名(如果DNS查找是成功的),否则是IP地址。 %H:请求协议。 %l:远程逻辑用户名,通常不会记录,或者记录为-。 %m:请求方法(如GET、POST)。 %p:本地端口。 %q:查询字符串(如果有的话)。 %r:请求的第一行,包括请求方法、URL和HTTP版本。 %s:响应的状态码(如200、404)。 %S:用户的会话ID。 %t:请求时间。 %u:请求的用户名,如果没有认证,则记录为-。 %U:请求的URL路径。 %v:本地服务器名。 %D:处理请求的时间(以毫秒为单位)。 %T:处理请求的时间(以秒为单位)。 您可以根据需要组合这些格式化字符串,以记录对您的应用程序最有用的信息。