tomcat採集阿里雲slb真實客戶端ip🫚

Noleaf發表於2024-03-20

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 &quot;%r&quot; %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 &quot;%r&quot; %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:處理請求的時間(以秒為單位)。
您可以根據需要組合這些格式化字串,以記錄對您的應用程式最有用的資訊。

相關文章