国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學習NodeJs之【如何獲取客戶端真實IP】

這篇具有很好參考價值的文章主要介紹了學習NodeJs之【如何獲取客戶端真實IP】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、場景

????????產品想要增加一個操作日志的模塊,重點記錄增刪改的操作ip。

二、問題描述

????????這塊業(yè)務其實需要按【是否代理】來分邏輯。首次開發(fā)時,并未考慮?測試生產環(huán)境有統(tǒng)一代理?,導致傳統(tǒng)的獲取ip方式取到了容器網(wǎng)關ip?!@然這樣是無法滿足產品想要區(qū)分操作ip。

三、調研過程

????????解決問題首先要明確一些基礎內容。參考如下:

express文檔:在代理后面運行Express

Express.js req.ip正在返回:: ffff:127.0.0.1

HTTP 請求頭中的 X-Forwarded-For

X-Forwarded-For

3.1?什么是req.ip?

????????當?trust proxy?為false時,req.ip的取值與req.connection.remoteAddress一致;

????????當?trust proxy?為true時,req.ip的取值與X-Forwarded-For的首個IP一致。

? ? ? ? 而?trust proxy?默認為false,因此?req.ip?默認為remoteAddress。

注意:這里引出兩個概念:remoteAddress和X-Forwarded-For。

3.2 什么是remoteAddress?

? ? ? ? 如果使用了代理,如nginx,客戶端發(fā)出的請求會先通過代理,由代理轉發(fā)給服務器。remoteAddress就是代理ip。

? ? ? ? 如果不使用代理,客戶端發(fā)出的請求會直接給服務器,remoteAddress就是真實ip。

3.3 什么是X-Forwarded-For?

node.js 從 tcp 中 remoteaddress 的值 ::ffff:127.0.0.1,從入坑到入土,運維,node.js,express

????????同樣的道理,假設真實ip為Proxy0:

? ? ? ? 如果使用了代理,如Proxy1,那么客戶端發(fā)出的請求是以Proxy0,Proxy1的過程到達服務器,X-Forwarded-For就用英文逗號+空格記錄代理過程,參考上圖。

? ? ? ? 如果不使用代理,客戶端發(fā)出的HTTP請求默認沒有X-Forwarded-For頭部,又因為不經(jīng)過代理服務器,所以到達目標服務器時,依然沒有X-Forwarded-For

3.4 什么是X-Real-Ip?

? ? ? ? X-Real-Ip的使用環(huán)境多為nginx配置,在配置中通過Set Header方法把轉發(fā)前的Proxy0,也就是remoteAddress值賦給X-Real-Ip頭部,避免在代理過程中丟失真實ip。

四、實踐

綜上內容,進行調試。我們依次在debug環(huán)境、production環(huán)境進行驗證:

4.1 客戶端ip不經(jīng)過代理,直接訪問??

結論:能獲取真實ip。

客戶端ip:127.xx.xx.49? ===>? 服務器ip:172.xx.xx.20

node.js 從 tcp 中 remoteaddress 的值 ::ffff:127.0.0.1,從入坑到入土,運維,node.js,express

?4.2 客戶端ip不經(jīng)過代理,訪問容器 ?

結論:不能獲取真實ip。

客戶端ip:127.xx.xx.49? ===>? 容器ip:172.xx.xx.246(服務器ip:172.xx.xx.250)

node.js 從 tcp 中 remoteaddress 的值 ::ffff:127.0.0.1,從入坑到入土,運維,node.js,express
?4.3 客戶端ip經(jīng)過1次代理,訪問容器??

結論:能獲取真實ip。

客戶端ip:127.xx.xx.49? ===>?代理ip:172.xx.xx.20? ===>?容器ip:172.xx.xx.246(服務器ip:172.xx.xx.250)

node.js 從 tcp 中 remoteaddress 的值 ::ffff:127.0.0.1,從入坑到入土,運維,node.js,express

五、總結?

? ? ? ? 以上僅為我個人的粗淺理解,實際還有偽造請求頭的場景存在。

? ? ? ? 包括這也只是web端在電腦上的ip記錄,另外還有外網(wǎng)環(huán)境下移動端的ip記錄等。

? ? ? ? 路過還請指正。

node.js 從 tcp 中 remoteaddress 的值 ::ffff:127.0.0.1,從入坑到入土,運維,node.js,express文章來源地址http://www.zghlxwxcb.cn/news/detail-773173.html

到了這里,關于學習NodeJs之【如何獲取客戶端真實IP】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 獲取客戶端真實IP的方法

    獲取客戶端真實IP的方法

    獲取請求的IP很簡單,可以直接使用request.getRemoteAddr()直接獲取。但由于請求在轉發(fā)到接口前,會經(jīng)過大量的反向代理,例如流程圖中,至少要經(jīng)過Nginx后,請求才會轉發(fā)到接口,因此需要對請求接口的IP做處理,提取客戶端真實IP地址。 配置Nginx的配置文件,需要反向代理服務

    2024年02月16日
    瀏覽(22)
  • nginx 獲取客戶端真實IP

    網(wǎng)站接入Web應用防火墻WAF(Web Application Firewall)后,訪問請求在到達源站服務器之前,需要經(jīng)過WAF的代理轉發(fā)。這種情況下,源站服務器可以通過解析回源請求中的X-Forwarded-For記錄,獲取客戶端的真實IP。 WAF在將客戶端的訪問請求轉發(fā)到下一環(huán)節(jié)的服務器時,會在HTTP的請求頭

    2023年04月09日
    瀏覽(35)
  • nginx獲取客戶端真實ip

    在nginx中獲取客戶端真實IP的方法有多種,以下是其中兩種常用的方法: 使用nginx的access_log模塊記錄請求日志,并在日志中包含客戶端的真實IP信息。例如: 在上述配置中,通過使用http_x_forwarded_for字段來獲取客戶端的真實IP地址。如果該字段不存在或不合法,則使用remote_ad

    2024年02月16日
    瀏覽(49)
  • k8s ingress獲取客戶端客戶端真實IP

    k8s ingress獲取客戶端客戶端真實IP

    在Kubernetes中,獲取客戶端真實IP地址是一個常見需求。這是因為在負載均衡架構中,原始請求的源IP地址會被替換成負載均衡器的IP地址。 獲取客戶端真實IP的需求背景包括以下幾點: 安全性:基于客戶端IP進行訪問控制和認證授權可以提高系統(tǒng)安全性。 日志記錄與審計:記

    2024年02月13日
    瀏覽(24)
  • Nginx(二十) 獲取真實客戶端IP

    ????????客戶端在訪問互聯(lián)網(wǎng)應用服務器時,與真實的應用服務器之間會因為有多層反向代理,而導致真實應用服務器獲取的僅是最近一層的反向代理服務器 IP。為使 Nginx 后端的上游服務器可以獲得真實客戶端 IP,Nginx 提供了 ngx_http_realip_module 模塊用以實現(xiàn)真實客戶端

    2024年01月16日
    瀏覽(31)
  • 獲取客戶端真實 IP 地址的最佳實踐

    1. 業(yè)務上云帶來性能收益 公司從去年全面推動業(yè)務上云,而以往 IDC 架構部署上,接入層采用典型的 4 層 LVS 多機房容災架構,在業(yè)務高峰時期,擴容困難(受限于物理機資源和 LVS 內網(wǎng)網(wǎng)段的網(wǎng)絡規(guī)劃),且抵擋不住 HTTPS 卸載引發(fā)的高 CPU 占用。 而經(jīng)過壓力測試發(fā)現(xiàn),使用

    2024年02月05日
    瀏覽(30)
  • Nginx代理后獲取客戶端真實IP地址

    Nginx代理后獲取客戶端真實IP地址

    在項目實際應用中,我們可能會需要獲取到用戶也就是客戶端的真實IP地址,比如記錄系統(tǒng)操作日志等情況。 通常情況下我們可以使用以下方式來獲取IP地址 但是當我們使用Nginx反向代理項目地址后,使用以上方法只能獲取到Nginx服務器的IP地址,并不是客戶端的IP地址。 解決

    2023年04月11日
    瀏覽(41)
  • 【Java開發(fā)】之獲取客戶端真實 IP 地址

    在投票系統(tǒng)開發(fā)中,為了防止刷票,我們需要限制每個 IP 地址只能投票一次; 當網(wǎng)站受到諸如 DDoS(Distributed Denial of Service,分布式拒絕服務攻擊)等攻擊時,我們需要快速定位攻擊者 IP; 在滲透測試過程中,經(jīng)常會碰到網(wǎng)站有 CDN(Content Distribution Network,內容交付網(wǎng)絡),

    2024年02月04日
    瀏覽(37)
  • Docker部署Nginx,無法獲取客戶端真實ip地址

    Docker部署Nginx,無法獲取客戶端真實ip地址

    在部署docker版本nginx進行請求轉發(fā),意外發(fā)現(xiàn)nginx打印日志中的客戶端ip并非為客戶端的真實ip(221.237.xxx.xxx),而是docker虛擬網(wǎng)卡的ip(172.17.0.1) 開始猜測是nginx配置問題,對比其他環(huán)境,發(fā)現(xiàn)配置相同,但其他環(huán)境未出現(xiàn)此情況 通過查詢資料,推測是docker網(wǎng)橋和linux防火墻存在

    2023年04月21日
    瀏覽(25)
  • k8s ingress 添加獲取客戶端真實ip配置

    k8s ingress 添加獲取客戶端真實ip配置

    本環(huán)境是一個互聯(lián)網(wǎng)ip服務器上的nginx轉發(fā)k8s集群內的ingress域名,實現(xiàn)所有服務通過域名訪問, 默認配置下,在pod內獲取客戶端請求地址信息時,獲取的是pod的ip和節(jié)點ip。要獲取客戶端ip,需要添加nginx配置中 除此之外還需要修改configmap ingress-nginx-controller ,增加如下配置

    2024年02月02日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包