Nginx反代站點獲取訪問用戶真實IP

Nginx反代站點獲取訪問用戶真實IP

實例環境

  • 用戶IP 192.168.1.3(內網) | 220.134.113.91(外網)
  • Nginx代理 ll.chinared.xyz:80
  • frp內網穿透 127.0.0.1:80 -> 103.213.247.187:80
  • 域名綁定: ll.chinared.xyz -> 103.213.247.187

實例說明

在本地服務器搭建一個web網站,基於frp做一個內網穿透將網站post至公網。但發現本地log記錄的ip非用戶真實IP,這樣無法對訪問站點的用戶做來源分析。
在這裏插入圖片描述

修正配置

修改站點配置文件(ll.chinared.xyz.conf)

  • 使用 set_real_ip_from 參數,添加真實服務器上一級代理的IP地址或者IP段(不懂的話,可以把服務器局域網ip, 環回地址,nginx代理ip,frp服務器ip 等都加上)
    在這裏插入圖片描述
    參數詳細說明:
- set_real_ip_from:真實服務器上一級代理的IP地址或者IP段,可以寫多行
- real_ip_header:從哪個header頭檢索出要的IP地址
- real_ip_recursive:從X-Real-IP列表中遞歸排除IP地址,將信任ip賦值給$remote_addr, 
     默認off,off是ip串從右到左遞歸, 比較set_real_ip_from裏面出現的IP,如果比對上則認爲該IP爲信任IP,即信任IP(往左)下一個IP被認爲是用戶真實IP。
 	on,從右至左依次比較,直到找到一個不是信任IP,則被認爲是用戶真實IP,賦值給$remote_addr

添加測試url: ll.chinared.xyz/testip.txt,
即加入如下location配置,無需在網站目錄創建testip.txt。
在這裏插入圖片描述
就此搞定,成功獲取用戶真實外網IP:
在這裏插入圖片描述
站點請求log

引用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章