日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

應用獲取客戶端真實IP

來源: 責編: 時間:2023-11-15 17:17:01 234觀看
導讀背景信息因為產品需要,要在應用端獲取到真實的客戶端IP,訪問鏈路如下:由于應用前面經過了多次代理,所以默認情況下是獲取不到真實IP的。基本概念在實現之前,先簡單了解一下常用來獲取IP的幾個header。remote_addrX-Forward

tfn28資訊網——每日最新資訊28at.com

背景信息

因為產品需要,要在應用端獲取到真實的客戶端IP,訪問鏈路如下:tfn28資訊網——每日最新資訊28at.com

tfn28資訊網——每日最新資訊28at.com

由于應用前面經過了多次代理,所以默認情況下是獲取不到真實IP的。tfn28資訊網——每日最新資訊28at.com

基本概念

在實現之前,先簡單了解一下常用來獲取IP的幾個header。tfn28資訊網——每日最新資訊28at.com

  • remote_addr
  • X-Forwarded-For
  • X-Real-IP

1、remote_addr

remote_addr代表客戶端IP,但是它的值不是由客戶端提供的,而是服務端根據客戶端IP指定的。當你訪問某個應用時,當中間沒有經過任何代理,那么應用獲取到的remote_addr就是你的主機IP。如果中間經過了代理轉發,正常情況下,應用獲取到的remote_addr就是代理的IP,除非在代理服務器上手動將remote_addr的地址設置成你的主機IP。tfn28資訊網——每日最新資訊28at.com

2、X-Forwarded-For

X-Forwarded-For是HTTP擴展頭,簡稱XFF。tfn28資訊網——每日最新資訊28at.com

XFF 的內容由「英文逗號 + 空格」隔開的多個部分組成,最開始的是離服務端最遠的設備 IP,然后是每一級代理設備的 IP,其格式為:X-Forwarded-For: client,proxy1,proxy2。tfn28資訊網——每日最新資訊28at.com

!! PS: X-Forwarded-For的格式可以被偽造。tfn28資訊網——每日最新資訊28at.com

如果一個應用的前面有三個代理,分別是 Proxy1、Proxy2、Proxy3,它們的IP地址分別是IP1、IP2、IP3,用戶的真實IP為IP0,那么按照XFF標準,應用收到的XFF信息應該如下:X-Forwarded-For: IP0,IP1,IP2。這里沒有IP3,是因為Proxy3是轉發Proxy2的代理,在轉發過程中會將Proxy2的IP地址追加到XFF中,而自己的IP地址會被放入remote_addr中。tfn28資訊網——每日最新資訊28at.com

tfn28資訊網——每日最新資訊28at.com

!! PS:通過一個代理才會把上一個節點的IP加到XFF中。tfn28資訊網——每日最新資訊28at.com

3、X-Real-IP

X-Real-IP是一個自定義的頭部字段,通常被HTTP代理用來表示與它產生TCP連接的設備IP,和XFF不一樣的是,它不是列表,無法將記錄追加到X-Real-IP的結尾,而是直接替換。tfn28資訊網——每日最新資訊28at.com

理想情況下,我們需要達到以下效果:tfn28資訊網——每日最新資訊28at.com

tfn28資訊網——每日最新資訊28at.com

也就是應用獲取到的X-Real-IP就是客戶端的真實IP,這就要求除了第一層代理之外,后面的代理不需要再去設置X-Real-IP,只需要做轉發即可,這樣應用就能拿到真實的客戶端訪問IP了。tfn28資訊網——每日最新資訊28at.com

具體實現

由于現實情況,我們在Haproxy上會做很多的規則配置,所以第一層SLB上是單純的TCP代理,因此在SLB上不需要做太多額外配置,客戶端IP會直接透傳過去。tfn28資訊網——每日最新資訊28at.com

當請求到達Haproxy之后,需要將客戶端IP加到XFF中,并且設置X-Real-IP為客戶端IP,具體配置如下:tfn28資訊網——每日最新資訊28at.com

defaults                mode                    http                log                     global                option                  httplog                option                  dontlognull                option http-server-close                log 127.0.0.1 local3                option forwardfor       except 127.0.0.0/8                option                  redispatch                retries                 3                timeout http-request    10s                timeout queue           1m                timeout connect         10s                timeout client          5m                timeout server          5m                timeout http-keep-alive 10s                timeout check           10s                unique-id-format %{+X}o/ %ci%cp%fi%fp%Ts%rt%pidfrontend https_link_ha        bind *:443 ssl crt /usr/local/etc/haproxy/cert/crt/ ca-file /usr/local/etc/haproxy/cert/ca/ca.pem verify optional        #log 127.0.0.1 local3        mode http        log-format "%ID %ci:%cp [%tr] %ft %b/%s %TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"        option accept-invalid-http-request        http-request set-header x-request-id %[unique-id]        http-request set-header x-request-time %[date()]        http-request set-header X-Real-IP %[src]        default_backend prebackend pre     server 1 10.74.136.13:8080 check inter 1500 rise 3 fall 3 weight 3

其中主要是兩個配置:tfn28資訊網——每日最新資訊28at.com

  • option forwardfor       except 127.0.0.0/8在由Haproxy發往后端的請求中加上XFF首部,其值是前個客戶端的IP。
  • http-request set-header X-Real-IP %[src]在X-Real-IP中設置客戶端IP。

現在請求就到達Ingress了。tfn28資訊網——每日最新資訊28at.com

Ingress也是一層代理,前面的客戶端IP已經放到XFF中,但是默認情況下,Ingress沒有開啟XFF。tfn28資訊網——每日最新資訊28at.com

在Ingress上要使用XFF,需要使用到以下三個參數:tfn28資訊網——每日最新資訊28at.com

  • use-forwarded-headers:是否開啟XFF頭傳遞,默認是false。
  • forwarded-for-header:XFF的真實header名,默認是X-Forwarded-For。
  • compute-full-forwarded-for:列出客戶端訪問所經過的代理IP,默認情況下,XFF是從remote_addr中獲取的值。

所以,我們只需要在Nginx Ingress的ConfigMap里增加以下兩個配置即可:tfn28資訊網——每日最新資訊28at.com

use-forwarded-headers: 'true'compute-full-forwarded-for: 'true'

配置完成后,Nginx Ingress會自動重載服務,不需要單獨重啟。tfn28資訊網——每日最新資訊28at.com

然后在應用的日志里就能獲取到客戶端的真實IP了。tfn28資訊網——每日最新資訊28at.com

tfn28資訊網——每日最新資訊28at.com

當然,并不是所有的場景都能通過XFF獲取到用戶的真實IP,比如當SLB前面還有CDN的情況下,獲取的可能就是CDN的來源IP了。tfn28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-25980-0.html應用獲取客戶端真實IP

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Qt串口回路信號讀取多線程14串口測試方案

下一篇: 使用 Python 的基于邊緣和基于區域的分割

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 深度探索 Elasticsearch 8.X:function_score 參數解讀與實戰案例分析

    在 Elasticsearch 中,function_score 可以讓我們在查詢的同時對搜索結果進行自定義評分。function_score 提供了一系列的參數和函數讓我們可以根據需求靈活地進行設置。近期
  • 中國家電海外掘金正當時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態LT(ID:LingTai_LT)2023年,出海市場戰況空前,中國創業者在海外紛紛摩拳擦掌,以期能夠把中國的商業模式、創業理念、戰略打法輸出海外,他們依
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 疑似小米14外觀設計圖曝光:后置相機模組變化不大

    下半年的大幕已經開啟,而誰將成為下半年手機圈的主角就成為了大家關注的焦點,其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
  • 三星Galaxy Z Fold5官方渲染圖曝光:13.4mm折疊厚度依舊感人

    據官方此前宣布,三星將于7月26日在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
  • 華為舉行春季智慧辦公新品發布會 首次推出電子墨水屏平板

    北京時間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發布會,在海外市場推出之前已經在中國市場上市的筆記本、平板、激光打印機等辦公產品,并首次推出搭載
Top 主站蜘蛛池模板: 商河县| 南江县| 宜宾县| 丘北县| 明溪县| 乡城县| 金川县| 镇平县| 平顺县| 察隅县| 五台县| 四会市| 昭平县| 精河县| 甘孜县| 酒泉市| 阜新市| 永新县| 鲁山县| 双桥区| 长子县| 阿荣旗| 三原县| 祥云县| 来安县| 金乡县| 邻水| 疏勒县| 宝鸡市| 涪陵区| 乡宁县| 托克逊县| 日喀则市| 霍邱县| 武邑县| 五莲县| 莫力| 桃源县| 历史| 洪湖市| 汾阳市|