欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Tomcat怎么獲取Nginx代理后的真實客戶端IP地址

這篇文章主要介紹“Tomcat怎么獲取Nginx代理后的真實客戶端IP地址”,在日常操作中,相信很多人在Tomcat怎么獲取Nginx代理后的真實客戶端IP地址問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Tomcat怎么獲取Nginx代理后的真實客戶端IP地址”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

公司主營業(yè)務:網站設計、成都網站制作、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出旬陽免費做網站回饋大家。

在傳統(tǒng)的架構中,中小型企業(yè)采用Nginx+Tomcat這種架構時,客戶端請求將由Nginx轉發(fā)至后端Tomcat,當有需求在Tomcat日志中也能看到客戶端真實IP地址的情況下,我們就需要使用到Nginx的 proxy_set_header指令來進行協(xié)助,而且還需要修改Tomcat對于 localhost_access 的日志格式,要不然tomcat記錄的訪客IP全都是Nginx的, 這是因為所有的請求都是由Nginx前端服務器轉發(fā)而來的。

Nginx配置日志格式

Nginx需要先獲取到客戶端的真實IP地址后才能將客戶端真實IP地址發(fā)送到后端Tomcat,所以也需要配置Nginx的日志格式,在Nginx代理Tomcat的日志格式中最為重要的配置為 $remote_addr 來獲取到真實客戶端IP地址,我這里的Nginx日志格式如下:

   log_format  main  '$remote_addr" "$remote_user" "[$time_local]" "$request"'
                     ' "$status" "$body_bytes_sent" "$http_referer"'
                     ' "$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio"'
                     ' "$upstream_addr" "$request_time" "$upstream_response_time" "$http_host"';

有關更多Nginx日志格式請見:https://k8sops.cn/nginx_log_module/

Nginx配置轉發(fā)IP頭

proxy_set_header指令可以配置到 http, server, location 三個配置段當中,我這里配置到 location 字段中。

location ^~ /crm-newm {
         proxy_pass  http://172.26.3.55:8086;
         proxy_http_version 1.1;
         proxy_set_header Host $host;
         proxy_set_header Port $proxy_port;
         proxy_set_header X-Real-IP $remote_addr;
      }

proxy_http_version指令解析:proxy_http_version指令用于設置代理的HTTP協(xié)議版本。默認情況下,使用的是1.0版。建議將版本1.1用于keepalive連接和NTLM身份驗證

Syntax:	proxy_http_version 1.0 | 1.1;
Default:	proxy_http_version 1.0;
Context:	http, server, location

proxy_set_headerproxy_set_header指令用于重新定義header或將字段附加到代理服務器的請求頭中。該值可以包含文本、變量、或者文本變量的組合。

proxy_set_header Host $host;Host為自定義文本,$host變量為Nginx中的內置變量,用于獲取當前主機名

proxy_set_header Port $proxy_port;Port為自定義文本,$proxy_port變量也是為Nginx中的內置變量,用于獲取nginx代理的主機端口

proxy_set_header X-Real-IP $remote_addr;X-Real-IP為自定義文本,$remote_addr變量也是Nginx中的內置變量,用于獲取真實客戶端IP地址,與Nginx中的$remote_addr一致

以上配置對于HTTP頭部內容,這些變量是不區(qū)分大小寫的

Tomcat日志格式講解

在tomcat家目錄下的 conf/server.xml 文件中,定位到 logs 字段來修改tomcat日志格式

vim conf/server.xml
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

prefixprefix用于指定tomcat 訪問日志的前綴

suffixsuffix用于指定tomcat 訪問日志的后綴

patternpattern用于指定tomcat 訪問日志的輸出格式

訪問日志支持的格式如下:

%a - 遠程IP地址
%A - 本地IP地址
%b - 發(fā)送的字節(jié)數(shù),不包括HTTP頭,或“ - ”如果沒有發(fā)送字節(jié)
%B - 發(fā)送的字節(jié)數(shù),不包括HTTP頭
%h - 遠程主機名
%H - 請求協(xié)議
%l - (小寫的L)- 遠程邏輯從identd的用戶名(總是返回' - ')
%m - 請求方法
%p - 本地端口
%q - 查詢字符串(在前面加上一個“?”如果它存在,否則是一個空字符串
%r - 第一行的要求
%s - 響應的HTTP狀態(tài)代碼
%S - 用戶會話ID
%t - 日期和時間,在通用日志格式
%u - 遠程用戶身份驗證
%U - 請求的URL路徑
%v - 本地服務器名(訪問域名)
%D - 處理請求的時間(以毫秒為單位)
%T - 處理請求的時間(以秒為單位)
%I -(大寫的i) - 當前請求的線程名稱

另外,還可以將request請求的查詢參數(shù)、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中的屬性名

配置Tomcat日志記錄客戶真實IP

此配置需要修改Tomcat的日志格式來支持記錄客戶端的真實IP地址,默認是不可以的。 在Nginx+Tomcat架構中使用日志格式中的 %a 是獲取不到真實客戶端IP地址的,如果直接訪問Tomcat那么 %a 可以獲取到真實客戶端IP地址。 如果要在Nginx+Tomcat架構中記錄真實客戶端IP地址需要在日志格式中添加 %{X-Real-IP}i 配置來獲取, %{X-Real-IP}i 是我們在Nginx location 配置段中指定的文本來獲取 $remote_addr 變量值的,在這里將此值傳送給 Tomcat。 %{Port}i 也是我們在Nginx中定義的文本來獲取后端的轉發(fā)端口,這里也將值轉發(fā)至Tomcat。

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%t %{X-Real-IP}i %h:%p %A:%{Port}i %m %s %S %u %H %v %U %b %T %I" />

以上日志輸出格式默認以空格做為分割的,以上格式我已經做了排版,tomcat輸出訪問日志如下:

1. %t 日期和時間 
2. %{X-Real-IP}i 客戶端真實IP地址
3. %h:%p 遠程IP(Nginx代理IP),遠程端口(客戶端訪問Nginx的端口)
4. %A:%{Port}i 本地IP地址及訪問的本地端口
5. %m HTTP請求方法
6. %s 請求狀態(tài)碼
7. %S 用戶會話ID
8. %u 遠程用戶身份驗證
9. %H HTTP請求協(xié)議
10. %v 訪問的域名
11. %U 訪問的URL
12. %b 發(fā)送的字節(jié)數(shù),不包括HTTP頭,或“ - ”如果沒有發(fā)送字節(jié)
13. %T Tomcat處理請求的時間(以秒為單位)
14. %I (大寫的i)當前請求的線程名稱

到此,關于“Tomcat怎么獲取Nginx代理后的真實客戶端IP地址”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

新聞名稱:Tomcat怎么獲取Nginx代理后的真實客戶端IP地址
標題來源:http://chinadenli.net/article0/jgjoio.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供定制網站、定制開發(fā)、ChatGPT、網站建設、網頁設計公司、標簽優(yōu)化

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
欧美日韩中黄片免费看| 欧美尤物在线视频91| 欧美一区二区三区在线播放| 日本丰满大奶熟女一区二区| 亚洲国产成人久久99精品| 国产精品激情对白一区二区| 麻豆看片麻豆免费视频| 日本高清二区视频久二区| 熟女白浆精品一区二区| 久久这里只有精品中文字幕| 经典欧美熟女激情综合网| 亚洲午夜精品视频观看| 日韩国产传媒在线精品| 亚洲另类女同一二三区| 中文字幕五月婷婷免费 | 在线九月婷婷丁香伊人| 91免费一区二区三区| 日韩精品人妻少妇一区二区| 亚洲国产色婷婷久久精品| 在线观看免费视频你懂的 | 亚洲精品偷拍视频免费观看| 国产精品成人免费精品自在线观看 | 爱草草在线观看免费视频| 欧美日韩乱一区二区三区| 久久国产精品热爱视频| 国产欧美日韩综合精品二区| 一本色道久久综合狠狠躁| 日韩性生活视频免费在线观看| 精品日韩欧美一区久久| 乱女午夜精品一区二区三区| 日韩少妇人妻中文字幕| 中文字幕欧美视频二区| 国产一区二区在线免费| 欧美乱视频一区二区三区| 中文字幕一区二区久久综合| 成人精品日韩专区在线观看| 激情亚洲一区国产精品久久| 内用黄老外示儒术出处| 亚洲av熟女一区二区三区蜜桃| 日韩人妻中文字幕精品| 人妻露脸一区二区三区|