有 2 种情况,您的 tomcat不在任何负载均衡器或代理之后,也不在一个. 如果您的 tomcat 不在代理或负载均衡器后面,则它已经正确。为了采取更多预防措施,可以添加%a
以便它可以获取远程 IP 地址,如Access_Log_Valve中所述
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%{X-Forwarded-For}i %h %F %l %u %t "%r" %s %b" />
至
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%{X-Forwarded-For}i %a %h %F %l %u %t "%r" %s %b" />
如果要%h
用于远程主机名,请在连接器处设置 enableLookups="true"
<!-- Define a non-SSL HTTP/1.1 Connector on port 8180 -->
<Connector port="8080"
....
enableLookups="true"
....
/>
但无论如何,tomcat 位于代理或负载均衡器之后,请添加更多配置,如下所示:
<Valve className="org.apache.catalina.valves.RemoteIpValve" />
<Valve className="org.apache.catalina.valves.AccessLogValve" ....
RemoteIpValve 使用的代理默认 IP 地址:
- 127.0.0.0/8
- 169.254.0.0/16
- 10.0.0.0/8
- 192.168.0.0/16
也许如果您的代理未在此处列出,请添加 internalproxies 配置以捕获代理:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="172.16.0.10|172.16.0.11" />