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 " />
可新增使用者代理欄位及上述勾選欄位資訊:
<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:處理請求的時間(以秒為單位)。 您可以根據需要組合這些格式化字串,以記錄對您的應用程式最有用的資訊。