Tomcat日志輸出來源的真實IP和域名


Tomcat日志輸出來源的真實IP和域名

敘述:Nginx的反向代理實際上是客戶端和真實的應用服務器之間的一個橋梁,客戶端(一般是瀏覽器)訪問Nginx服務器,Nginx再去訪問Web應用服務器。對於Web應用來說,這次HTTP請求的客戶端是Nginx而非真實的客戶端瀏覽器,如果不做特殊處理的話,Web應用會把Nginx當作請求的客戶端,獲取到的客戶端信息就是Nginx的一些信息。

 

要在Tomcat記錄到真實的IP和瀏覽器訪問的域名

1、添加頭部

在location上增加如下內容:

proxy_set_header Host  $http_host;

proxy_set_header X-Real-IP  $remote_addr;

proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto  $scheme;

 

 

2、Tomcat修改server.xml文件

在Host元素最下面找到className

 

添加上圖紅框內的字段格式內容即可。

 

訪問瀏覽器后查看日志,已經生效

 

pattern配置段,用於指定日志的輸出格式。日志參數如下:

%a - 遠程IP地址

%A - 本地IP地址

%b - 發送的字節數,不包括HTTP頭,或“ - ”如果沒有發送字節

%B - 發送的字節數,不包括HTTP頭

%h - 遠程主機名

%H - 請求協議

%l (小寫的L)- 遠程邏輯從identd的用戶名(總是返回' - ')

%m - 請求方法

%p - 本地端口

%q - 查詢字符串(在前面加上一個“?”如果它存在,否則是一個空字符串

%r - 第一行的要求

%s - 響應的HTTP狀態代碼

%S - 用戶會話ID

%t - 日期和時間,在通用日志格式

%u - 遠程用戶身份驗證

%U - 請求的URL路徑

%v - 本地服務器名

%D - 處理請求的時間(以毫秒為單位)

%T - 處理請求的時間(以秒為單位)

%I (大寫的i) - 當前請求的線程名稱

 

 

另外,還可以將request請求的查詢參數、session會話變量值、cookie值或HTTP請求/響應頭內容的變量值等內容寫入到日志文件。

它仿照了apache的語法:

%{XXX}i xxx代表傳入的頭(HTTP Request)

%{XXX}o xxx代表傳出的響應頭(Http Resonse)

%{XXX}c xxx代表特定的Cookie名

%{XXX}r xxx代表ServletRequest屬性名

%{XXX}s xxx代表HttpSession中的屬性名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM