Nginx繞過Cloudflare等等CDN獲取用戶真實IP

slash

用一串code繞過Cloudflare等等CDN獲取用戶真實IP

前言

在查看IP log時突然發現IP竟然是來自CDN,想說怎麼IP都長得差不多…
想了想似乎是CDN的問題,於是就查出了下列解法~
這樣的改法好處是,就算哪天CDN不用了,也不用修改IP獲取的方法~

教學

/etc/nginx/nginx.conf也就是預設的nginx檔案中的

1
2
3
http {
...
}

添加下面這段
1
2
3
4
5
6
7
map $HTTP_CF_CONNECTING_IP  $clientRealIp {
"" $remote_addr;
~^(?P<firstAddr>[0-9.]+),?.*$ $firstAddr;
}
log_format main '$clientRealIp [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'$http_user_agent $remote_addr $request_time';

並且在你自己設定nginx log檔案的地方使用main這個格式
每個人放log設定的地方不一樣,不用連路徑都要照著抄w
1
2
3
...
access_log /var/log/nginx/access.log main;
...

Reference

  • 標題: Nginx繞過Cloudflare等等CDN獲取用戶真實IP
  • 作者: slash
  • 撰寫于: 2022-06-03 03:24:40
  • 更新于: 2023-04-13 01:49:27
  • 連結: https://slasholy.tw/2022/06/03/nginx-cloudflare-rip/
  • 版權宣告: 本作品采用 CC BY-NC-SA 4.0 进行许可。
此頁目錄
Nginx繞過Cloudflare等等CDN獲取用戶真實IP