最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

一、配置 Nginx 獲取客戶端真實 IP

1、基本配置說明

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

示例配置

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

    # 設置真實 IP 的頭部信息
    real_ip_header X-Forwarded-For;

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

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

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

2、set_real_ip_from詳解

1. 請求來源 IP 在 set_real_ip_from 范圍內

如果請求來源的 IP 地址在 set_real_ip_from 指定的范圍內,Nginx 會信任該請求,并使用 real_ip_header 指定的頭部(如 X-Forwarded-For)中的值作為客戶端的真實 IP 地址。

行為:

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

2. 請求來源 IP 不在 set_real_ip_from 范圍內

如果請求來源的 IP 地址不在 set_real_ip_from 指定的范圍內,Nginx 不會信任這個請求中的 X-Forwarded-For 頭部中的 IP 地址。

行為:

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

場景分析:

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

  • 不在范圍內: 如果請求不是通過你信任的負載均衡器發(fā)來的(可能是直接訪問 Nginx,或者來自不可信的代理服務器),Nginx 會認為這個請求中的 X-Forwarded-For 不可信,于是使用實際請求來源 IP(負載均衡器或代理的 IP 地址)作為客戶端 IP。

3、log_format 配置(參考)

配置日志格式時,可以直接使用 $remote_addr 變量。Nginx 在解析 real_ip_header 后,會自動將 $remote_addr 替換為解析后的真實 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 之后,這個變量將代表客戶端的真實 IP 地址。

二、調試與測試

為了確保配置正確,我們可以使用一個簡單的調試日志來測試 X-Forwarded-For 頭部的內容。

添加調試日志

可以通過下面的配置,將 X-Forwarded-For 頭部記錄到一個專門的調試日志文件中。

調試日志配置

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

通過這一配置,你可以在調試過程中直接查看 X-Forwarded-For 頭部的內容,以確認它是否包含客戶端的真實 IP 地址。

檢查調試日志

配置完成后,重啟 Nginx,并通過訪問應用生成一些日志。然后,查看調試日志 /path/to/log/debug.log 以驗證 X-Forwarded-For 頭部的值。

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

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

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

在實際應用中,如果你使用了 OpenResty 或 Nginx 的 Lua 模塊,可以在 Lua 代碼中使用 ngx.var.remote_addr 來獲取解析后的真實 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 會獲取到解析后的客戶端真實 IP。這在用戶跟蹤或日志記錄中非常有用。

四、總結

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

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

相關文章

  • Nginx 服務器安裝及配置文件詳解介紹

    Nginx 服務器安裝及配置文件詳解介紹

    這篇文章主要介紹了Nginx 服務器安裝及配置文件詳解介紹,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-11-11
  • Nginx訪問慢問題解決辦法(慢1s)

    Nginx訪問慢問題解決辦法(慢1s)

    這篇文章主要給大家介紹了關于Nginx訪問慢問題解決辦法的相關資料,訪問速度對網(wǎng)站是極為關鍵的因素,而服務器對其影響最為深遠,需要的朋友可以參考下
    2023-08-08
  • Nginx與后臺應用端口沖突的解決方案

    Nginx與后臺應用端口沖突的解決方案

    在部署Web應用時,Nginx和后臺應用(如Node.js、Python Flask、Java Spring Boot等)常常需要同時運行在一臺服務器上,然而,當它們需要監(jiān)聽同一個端口(如8000)時,就會出現(xiàn)端口沖突的問題,本文將詳細介紹幾種解決Nginx與后臺應用端口沖突的方法
    2025-02-02
  • Nginx跨域訪問場景配置和防盜鏈詳解

    Nginx跨域訪問場景配置和防盜鏈詳解

    這篇文章主要介紹了Nginx跨域訪問場景配置和防盜鏈詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Nginx捕獲并自定義proxy_pass返回的錯誤問題

    Nginx捕獲并自定義proxy_pass返回的錯誤問題

    這篇文章主要介紹了Nginx捕獲并自定義proxy_pass返回的錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Windows設置nginx啟動端口的方法

    Windows設置nginx啟動端口的方法

    在服務器配置與開發(fā)過程中,nginx 作為一款高效的 HTTP 和反向代理服務器,被廣泛應用,而在 Windows 系統(tǒng)中,合理設置 nginx 的啟動端口,是確保其正常運行與滿足業(yè)務需求的關鍵步驟,本文將詳細介紹 Windows 設置 nginx 啟動端口的方法,需要的朋友可以參考下
    2025-02-02
  • Nginx Lua Waf 插件一鍵部署的操作示例

    Nginx Lua Waf 插件一鍵部署的操作示例

    這篇文章主要介紹了Nginx Lua Waf 插件一鍵部署的操作示例,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Nginx服務器配置性能優(yōu)化方案

    Nginx服務器配置性能優(yōu)化方案

    這篇文章主要為大家詳細介紹了Nginx服務器配置性能優(yōu)化方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Nginx動態(tài)IP黑名單的實現(xiàn)步驟

    Nginx動態(tài)IP黑名單的實現(xiàn)步驟

    為了封禁某些爬蟲或者惡意用戶對服務器的請求,我們需要建立一個動態(tài)的?IP?黑名單,本文主要介紹了Nginx動態(tài)IP黑名單的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • Nginx服務器中HTTP 301跳轉到帶www的域名的方法

    Nginx服務器中HTTP 301跳轉到帶www的域名的方法

    這篇文章主要介紹了Nginx服務器中HTTP 301跳轉到帶www的域名的方法,包括從HTTPS 301提示跳轉等rewrite相關的方法,需要的朋友可以參考下
    2015-07-07

最新評論

济宁市| 海伦市| 兴隆县| 申扎县| 马尔康县| 肇庆市| 枣阳市| 金溪县| 安远县| 东港市| 湄潭县| 汽车| 老河口市| 陇西县| 宣汉县| 常山县| 清镇市| 临洮县| 德令哈市| 尤溪县| 辰溪县| 南丹县| 盘锦市| 衢州市| 抚州市| 潍坊市| 茌平县| 阆中市| 邵东县| 正安县| 徐闻县| 许昌市| 闽清县| 柏乡县| 绥德县| 江川县| 防城港市| 文登市| 高阳县| 泸州市| 浦江县|