1. 程式人生 > >Tomcat Access Log記錄X-Forwarded-For

Tomcat Access Log記錄X-Forwarded-For

在實際使用中,使用F5或LVS為tomcat做負載均衡時,由於做了反向代理,tomcat記錄的Aceess Log中,會將客戶端ip記錄為F5或lvs的ip,導致無法正常記錄訪問者的真實ip資訊.

Tomcat配置中,可以通過修改AceessLogValve/ExtendedAceessLogValve的設定,解決這個問題.

Tomcat Log 如何記錄Access Log

tomcat記錄access log, 由conf目錄下的server.xml配置.一個典型的配置如下:
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
</Host>
AccessLogValve中的pattern屬性決定了log中需要記錄哪些資訊, 相應的pattern規範可以參考tomcat 的官方文件,有比較詳細的說明. pattern說明 下面介紹下如果在反向代理情況下記錄使用者真實的ip資訊.

AceessLogValve

使用預設的AceessLogValve記錄日誌時,pattern 屬性中可以使用%{xxx}i的格式獲取請求的header資訊. 故使用%{X-Forwarded-For}i即可獲取請求中的X-Forwarded-For資訊,即經過反向代理後的客戶端真實ip. 配置檔案的寫法類似如下:
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <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" />
</Host>

ExtendedAceessLogValve

我們在專案中使用ExtendedAceessLogValve進行日誌記錄,主要是為了使日誌遵守W3C標準, 使用ExtendedAceessLogValve時,可以在pattern 屬性中使用cs(X-Forwarded-For)獲取客戶端真實ip,原理和AceessLogValve一致,只是寫法不一樣.

配置檔案的寫法類似如下:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.ExtendedAccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="cs(X-Forwarded-For) c-ip s-ip date time cs-method cs-uri sc-status bytes time-taken" />
</Host>


相關推薦

Tomcat Access Log記錄X-Forwarded-For

在實際使用中,使用F5或LVS為tomcat做負載均衡時,由於做了反向代理,tomcat記錄的Aceess Log中,會將客戶端ip記錄為F5或lvs的ip,導致無法正常記錄訪問者的真實ip資訊. Tomcat配置中,可以通過修改AceessLogValve/Extende

阿里雲X-Forwarded-For 發現tomcat記錄的日誌全部來自於SLB轉發的IP地址,不能獲取到請求的真實IP。

1、背景:阿里雲的SLB的負載均衡,在tomcat中獲取不到真實IP,而是阿里的內網IP,SLB中倆臺或者3臺本身是區域網,這裡是SLB原理,可以看看,沒怎麼看懂,呵呵,要細細讀下。 2、需要開啟tomcat的X-Forwarded-For,在tomcat/conf/se

apache反向代理tomcatx-forwarded-for為null的問題

apache 在用ProxyPass時會自動在header中設定X-Forwarded-For X-Forwarded-Host和X-Forwarded-Server (http://httpd.apache.org/docs/2.2/mod/mod_proxy.html)

HTTP 請求頭中的 X-Forwarded-ForX-Real-IP

進行 gnu 防止 cal 截取 雲服務器 sta 分配 wow X-Forwarded-For 在使用nginx做反向代理時,我們為了記錄整個的代理過程,我們往往會在配置文件中做如下配置: location / { 省略...

X-Forwarded-For】WEB修改訪客IP

識別 int urn 開發 user p地址 連接 通過 light X-Forwarded-For(XFF)是用來識別通過HTTP代理或負載均衡方式連接到Web服務器的客戶端最原始的IP地址的HTTP請求頭字段。 Squid 緩存代理服務器的開發人員最早引入了這一HTTP

使用X-Forwarded-For字段修改報文請求ip

html code log http shadow tro ado 8.0 agen (1)訪問的原始網頁顯示,只要求127.0.0.1ip訪問(2)獲取的完整報文請求為 (3)我們將其修改,加上x-forworded-for字段 GET /from.php HTTP/1.

X-Forwarded-For偽造及防禦

logs 管理 address _for mar 地址 real 代理服務 ip訪問 使用x-Forward_for插件或者burpsuit可以改包,偽造任意的IP地址,使一些管理員後臺繞過對IP地址限制的訪問。 防護策略: 1.對於直接使用的 Web 應用,必須使用從TC

haproxy nginx X-Forwarded-For的值

toc AR 將不 註釋 寫入 IE 不同 pro except client(web 瀏覽器) ----> haproxy(acl backend)----> nginx (proxy_pass)----> java程序地址如下:1.1.1.1

X-Forwarded-For(XFF頭)

X-Forwarded-For:簡稱XFF頭,它代表客戶端,也就是HTTP的請求端真實的IP,只有在通過了HTTP 代理或者負載均衡伺服器時才會新增該項。它不是RFC中定義的標準請求頭資訊,在squid快取代理伺服器開發文件中可以找到該項的詳細介紹。標準格式如下:X-Forwarded-For:

Nginx 之 X-Forwarded-For 中首個IP一定真實嗎?

歡迎訪問陳同學部落格原文 使用 Nginx 基於客戶端IP進行限流時,需在代理中拿到客戶端真實IP。獲取IP方式有多種,如利用 remote_addr、X-Real-IP、X-Forwarded-For等。 以前看到一些專案通過獲取 X-Forwarded-

X-Forwarded-For的一些理解

X-Forwarded-For 是一個 HTTP 擴充套件頭部,主要是為了讓 Web 伺服器獲取訪問使用者的真實 IP 地址(其實這個真實未必是真實的,後面會說到)。 那為什麼 Web 伺服器只有通過 X-Forwarded-For 頭才能獲取真實的 IP? 這裡用 PHP 語言來說明,不明白原

X-Forwarded-For

    最近在專案對外聯調過程中,發現了關於XFF的問題,這裡簡單介紹下,大部分是貼維基百科中的詞條:https://zh.wikipedia.org/wiki/X-Forwarded-For     專案場

HTTP X-Forwarded-For 頭部欄位的應用

【背景】在運維工作中,經常會遇到X-Forwarded-For 這個欄位,比如nginx、haproxy、快取代理、甚至好點的網路7層網路裝置都可以修改這個欄位,這個欄位對記錄客戶端的真實IP地址非常有用,在分析nginx日誌,haproxy日誌中,經常利用這個欄位統計訪問的來源,並進一步分析問題 常見如下

HTTP X-Forwarded-For 頭部字段的應用

辦公 comm 詳細 type targe 程序 redirect blog 行修改 【背景】在運維工作中,經常會遇到X-Forwarded-For 這個字段,比如nginx、haproxy、緩存代理、甚至好點的網絡7層網絡設備都可以修改這個字段,這個字段對記錄客戶端的真實

【nginx】配置x-forwarded-for 頭部

本地用tomcat起了一個j2ee的應用,然後又起了一個nginx做反向代理。 nginx.conf: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/e

利用X-Forwarded-For進行sql注入

由於系統一般會採用String ip = request.getHeader("X-Forwarded-For");進行獲取ip,然後注入者就可以通過X-Forwarded-For請求頭資訊就行偽造ip,當然了這個ip也可以是一些注入語句,如下X-Forwarded-For:

tomcat Access Log 統計相應時間

Access Log Valve用來建立日誌檔案,格式與標準的web server日誌檔案相同。可以使用用日誌分析工具對日誌進行分析,跟蹤頁面點選次數、使用者會話的活動等。Access Log Valve的很多配置和行為特性與File Logger相同,包括每晚午夜自動切換

偽造 X-Forwarded-For

背景 應同學的要求,幫忙刷票。我上去看了一下,對方網站做了IP限制,一天之內一個IP只能投一票,並沒有使用cookie校驗,驗證碼校驗等技術,總體來說這個網站的情況是比較常見的,常見的解決辦法有兩個: 使用大量的真實IP刷票 如果你使用的是一個撥號上網的網路,每次的撥號都

X-Forwarded-For & x-real-ip

百度百科[url]http://baike.baidu.com/link?url=ulLGCvcv-OBkRMcvrasj2LxSBrmrP39K_TLeMZBN8fNI4tKhuiF7UIZqzv8dYaY2I2sI3

如何實時監測分析X-Forwarded-For偽造

元組 請求頭 刷票 應用場景 http訪問 技術 隨機 數據包 remote 什麽是X-Forwarded-For如果要問當下最走紅的應用層協議,當HTTP莫屬,一個無狀態維護協議,其連接基於TCP,在HTTP協議頭部沒有IP地址字段。所以,如果要在應用層保存IP地址信息(