亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nginx獲取客戶端真實(shí)IP(real_ip_header)的實(shí)現(xiàn)

 更新時(shí)間:2024年10月13日 16:06:06   作者:shy好好學(xué)習(xí)  
在使用Nginx作為反向代理時(shí),確保獲取客戶端真實(shí)IP是關(guān)鍵,通過(guò)配置real_ip_header和set_real_ip_from,Nginx可以正確解析X-Forwarded-For頭部信息,并更新$remote_addr為客戶端真實(shí)IP,下面就來(lái)具體介紹一下

在使用 Nginx 作為反向代理或負(fù)載均衡器時(shí),我們常常需要獲取客戶端的真實(shí) IP 地址。然而,默認(rèn)情況下,Nginx 的 $remote_addr 變量記錄的 IP 地址可能是上游代理或負(fù)載均衡器的 IP,而非實(shí)際客戶端的 IP。為了確保我們能夠正確獲取和記錄客戶端的真實(shí) IP,本文將介紹如何配置 Nginx,并進(jìn)行調(diào)試。

一、配置 Nginx 獲取客戶端真實(shí) IP

1、基本配置說(shuō)明

首先,我們需要確保 Nginx 能夠正確解析來(lái)自上游代理或負(fù)載均衡器的 X-Forwarded-For 頭部信息。通過(guò)配置 real_ip_header 和 set_real_ip_from,Nginx 可以將 $remote_addr 更新為客戶端的真實(shí) IP。

示例配置

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;

    # 設(shè)置真實(shí) IP 的頭部信息
    real_ip_header X-Forwarded-For;

    # 指定可信任的上游代理 IP 范圍,這里以 172.0.0.0/8 為例(就是你負(fù)載均衡的ip網(wǎng)段)
    set_real_ip_from 172.0.0.0/8;

    # 其他配置
    ...
}
  • real_ip_header X-Forwarded-For;:指定從哪個(gè)頭部獲取客戶端的真實(shí) IP 地址。常見(jiàn)的頭部包括 X-Forwarded-For、X-Real-IP 等。
  • set_real_ip_from 172.0.0.0/8;:指定哪些 IP 地址段的請(qǐng)求可以被信任。如果請(qǐng)求來(lái)自這些地址段,那么 Nginx 會(huì)根據(jù) real_ip_header 的配置更新 $remote_addr

在 Nginx 中,set_real_ip_from 指令用于定義哪些 IP 地址或 IP 地址段是被信任的。根據(jù)請(qǐng)求來(lái)源 IP 地址是否在 set_real_ip_from 指定的范圍內(nèi),Nginx 的行為會(huì)有所不同,具體區(qū)別如下:

2、set_real_ip_from詳解

1. 請(qǐng)求來(lái)源 IP 在 set_real_ip_from 范圍內(nèi)

如果請(qǐng)求來(lái)源的 IP 地址在 set_real_ip_from 指定的范圍內(nèi),Nginx 會(huì)信任該請(qǐng)求,并使用 real_ip_header 指定的頭部(如 X-Forwarded-For)中的值作為客戶端的真實(shí) IP 地址。

行為:

  • Nginx 使用 X-Forwarded-For 頭中的第一個(gè)(最左邊的)IP 地址作為 $remote_addr(即客戶端的真實(shí) IP 地址)。
  • 這種情況通常出現(xiàn)在負(fù)載均衡器或反向代理服務(wù)器前端,它們會(huì)添加 X-Forwarded-For 頭來(lái)指示真實(shí)的客戶端 IP。

2. 請(qǐng)求來(lái)源 IP 不在 set_real_ip_from 范圍內(nèi)

如果請(qǐng)求來(lái)源的 IP 地址不在 set_real_ip_from 指定的范圍內(nèi),Nginx 不會(huì)信任這個(gè)請(qǐng)求中的 X-Forwarded-For 頭部中的 IP 地址。

行為:

  • Nginx 直接使用請(qǐng)求來(lái)源的 IP 地址(即 $remote_addr)作為客戶端的 IP 地址。
  • 這意味著 Nginx 會(huì)將負(fù)載均衡器或代理服務(wù)器的 IP 地址視為客戶端的 IP,而不會(huì)考慮 X-Forwarded-For 頭中的值。

場(chǎng)景分析:

  • 在范圍內(nèi): 如果你有一個(gè)負(fù)載均衡器,所有請(qǐng)求都會(huì)先經(jīng)過(guò)它再到達(dá) Nginx。負(fù)載均衡器會(huì)在請(qǐng)求頭中加入 X-Forwarded-For 以記錄客戶端的真實(shí) IP。如果你將負(fù)載均衡器的 IP 地址配置在 set_real_ip_from 中,Nginx 會(huì)讀取并信任 X-Forwarded-For 中的客戶端真實(shí) IP。

  • 不在范圍內(nèi): 如果請(qǐng)求不是通過(guò)你信任的負(fù)載均衡器發(fā)來(lái)的(可能是直接訪問(wèn) Nginx,或者來(lái)自不可信的代理服務(wù)器),Nginx 會(huì)認(rèn)為這個(gè)請(qǐng)求中的 X-Forwarded-For 不可信,于是使用實(shí)際請(qǐng)求來(lái)源 IP(負(fù)載均衡器或代理的 IP 地址)作為客戶端 IP。

3、log_format 配置(參考)

配置日志格式時(shí),可以直接使用 $remote_addr 變量。Nginx 在解析 real_ip_header 后,會(huì)自動(dòng)將 $remote_addr 替換為解析后的真實(shí) IP 地址。

日志格式配置

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';
  • $remote_addr:在配置了 real_ip_header 之后,這個(gè)變量將代表客戶端的真實(shí) IP 地址。

二、調(diào)試與測(cè)試

為了確保配置正確,我們可以使用一個(gè)簡(jiǎn)單的調(diào)試日志來(lái)測(cè)試 X-Forwarded-For 頭部的內(nèi)容。

添加調(diào)試日志

可以通過(guò)下面的配置,將 X-Forwarded-For 頭部記錄到一個(gè)專(zhuān)門(mén)的調(diào)試日志文件中。

調(diào)試日志配置

log_format debug '$http_x_forwarded_for';
access_log /path/to/log/debug.log debug;

通過(guò)這一配置,你可以在調(diào)試過(guò)程中直接查看 X-Forwarded-For 頭部的內(nèi)容,以確認(rèn)它是否包含客戶端的真實(shí) IP 地址。

檢查調(diào)試日志

配置完成后,重啟 Nginx,并通過(guò)訪問(wèn)應(yīng)用生成一些日志。然后,查看調(diào)試日志 /path/to/log/debug.log 以驗(yàn)證 X-Forwarded-For 頭部的值。

tail -f /path/to/log/debug.log

如果 X-Forwarded-For 頭部中包含了客戶端的真實(shí) IP 地址,那么說(shuō)明配置正確,Nginx 能夠正確獲取并記錄客戶端的真實(shí) IP。

三、Lua 中使用客戶端真實(shí) IP(參考)

在實(shí)際應(yīng)用中,如果你使用了 OpenResty 或 Nginx 的 Lua 模塊,可以在 Lua 代碼中使用 ngx.var.remote_addr 來(lái)獲取解析后的真實(shí) IP。

示例代碼

access_by_lua "
local uid = ngx.var.cookie_bb_id
if not uid then
    uid = ngx.md5(ngx.now() .. ngx.var.remote_addr .. ngx.var.http_user_agent)
    ngx.header['Set-Cookie'] = 'bb_id=' .. uid .. '; path=/; Expires=' .. ngx.cookie_time(ngx.time() + 3650*86400) .. '; Secure; SameSite=None'
end
";

在上面的 Lua 代碼中,ngx.var.remote_addr 會(huì)獲取到解析后的客戶端真實(shí) IP。這在用戶跟蹤或日志記錄中非常有用。

四、總結(jié)

通過(guò)正確配置 real_ip_header 和 set_real_ip_from,我們可以確保 Nginx 能夠通過(guò) $remote_addr 獲取并記錄客戶端的真實(shí) IP 地址。在配置完成后,通過(guò)調(diào)試日志可以驗(yàn)證配置是否生效。如果你在 Lua 中需要獲取真實(shí) IP,可以直接使用 ngx.var.remote_addr

到此這篇關(guān)于Nginx獲取客戶端真實(shí)IP(real_ip_header)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx獲取客戶端真實(shí)IP內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx設(shè)置https和http同時(shí)使用同一個(gè)端口訪問(wèn)

    Nginx設(shè)置https和http同時(shí)使用同一個(gè)端口訪問(wèn)

    本文主要介紹了Nginx通過(guò)8070端口同時(shí)支持HTTP和HTTPS的配置方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • window下使用nginx提供文件下載服務(wù)器配置

    window下使用nginx提供文件下載服務(wù)器配置

    這篇文章主要介紹了window下使用nginx提供文件下載服務(wù)器配置,需要的朋友可以參考下
    2017-06-06
  • Nginx反向代理與緩存配置方式

    Nginx反向代理與緩存配置方式

    本文指導(dǎo)Nginx安裝、負(fù)載均衡配置(含輪詢、備用、權(quán)重等參數(shù))、真實(shí)IP日志記錄及緩存機(jī)制設(shè)置,涵蓋反向代理、服務(wù)器狀態(tài)管理與緩存驗(yàn)證測(cè)試
    2025-07-07
  • nginx之virtual host虛擬主機(jī)的配置實(shí)現(xiàn)

    nginx之virtual host虛擬主機(jī)的配置實(shí)現(xiàn)

    虛擬主機(jī)(vhost)技術(shù)允許一臺(tái)物理服務(wù)器托管多個(gè)獨(dú)立網(wǎng)站或應(yīng)用,每個(gè)虛擬主機(jī)擁有獨(dú)立的域名、配置文件等,實(shí)現(xiàn)資源隔離管理,Nginx服務(wù)器通過(guò)配置文件實(shí)現(xiàn)虛擬主機(jī)設(shè)置,感興趣的可以了解一下
    2024-11-11
  • centos7系統(tǒng)下nginx安裝并配置開(kāi)機(jī)自啟動(dòng)操作

    centos7系統(tǒng)下nginx安裝并配置開(kāi)機(jī)自啟動(dòng)操作

    這篇文章主要介紹了centos7系統(tǒng)下nginx安裝并配置開(kāi)機(jī)自啟動(dòng)操作方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • Nginx會(huì)話保持的具體實(shí)現(xiàn)

    Nginx會(huì)話保持的具體實(shí)現(xiàn)

    會(huì)話保持是指在會(huì)話持續(xù)或會(huì)話完成一個(gè)任務(wù)或一個(gè)事務(wù)的時(shí)間段內(nèi),將客戶端請(qǐng)求引導(dǎo)至同一個(gè)后端Web服務(wù)器或應(yīng)用服務(wù)器,本文主要介紹了Nginx會(huì)話保持的具體實(shí)現(xiàn),感興趣的可以了解一下
    2024-07-07
  • nginx實(shí)現(xiàn)動(dòng)靜分離的方法示例

    nginx實(shí)現(xiàn)動(dòng)靜分離的方法示例

    Nginx的靜態(tài)處理能力很強(qiáng),但是動(dòng)態(tài)處理能力不足,因此,在企業(yè)中常用動(dòng)靜分離技術(shù),本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下
    2021-11-11
  • 關(guān)于nginx負(fù)載均衡和反向代理的講解

    關(guān)于nginx負(fù)載均衡和反向代理的講解

    這篇文章主要介紹了nginx負(fù)載均衡和反向代理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,大家一起來(lái)看看吧
    2021-09-09
  • Nginx如何安裝配置Lua支持

    Nginx如何安裝配置Lua支持

    這篇文章主要介紹了Nginx如何安裝配置Lua支持方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Nginx 分發(fā)策略的實(shí)現(xiàn)

    Nginx 分發(fā)策略的實(shí)現(xiàn)

    分發(fā)策略是將客戶端請(qǐng)求根據(jù)一定的規(guī)則或算法,可以分配到不同的后端服務(wù)器上,本文就來(lái)介紹一下Nginx分發(fā)策略的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02

最新評(píng)論