實例環境
- 用戶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: