使用CDN后,Nginx如何获取访客(客户端)真实IP
# Cloudflare
使用Cloudflare后,在Nginx配置中相应位置添加如下代码以获取用户真实IP
set_real_ip_from 0.0.0.0/0;
real_ip_header CF-Connecting-IP;
1
2
2
# AWS Cloudfront
需要利用到CloudFront-Viewer-Address请求头,但该请求头默认未启用,需手动前往Cloudfront控制面板开启。开启方法可参考如何从CloudFront上获取客户端真实IP地址 (opens new window)。开启后,使用以下代码获取访客真实IP。
set_real_ip_from 0.0.0.0/0;
real_ip_header CloudFront-Viewer-Address;
1
2
2
# Netlify
Netlify不支持X-Forwarded-For请求头,获取访客真实IP需使用专属请求头X-Nf-Client-Connection-Ip。
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Nf-Client-Connection-Ip;
1
2
2
# Vercel
Vercel支持多个请求头转发用户IP,分别是X-Forwarded-For,X-Vercel-Forwarded-For和X-Real-Ip,其中X-Forwarded-For和X-Real-Ip内容相同,X-Vercel-Forwarded-For大部分情况下内容和X-Forwarded-For以及X-Real-Ip相同。
X-Real-Ip请求头似乎已经被Vercel弃用,或仅提供给付费用户。
区别在于X-Forwarded-For和X-Real-Ip的值可以被覆盖,而X-Vercel-Forwarded-For不能。
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Vercel-Forwarded-For;
1
2
2
# 阿里云CDN
set_real_ip_from 0.0.0.0/0;
real_ip_header Ali-CDN-Real-IP;
1
2
2
# Gcore CDN / Bunny CDN / 其他CDN
使用Bunny CDN获取访客真实IP,需要先在CDN面板关闭IP匿名化,关闭后使用以下代码获取访客真实IP。
除CDN厂商有特殊说明外,一般情况下使用X-Forwarded-For请求头获取访客IP。
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
1
2
2
上次更新: 2025/05/01, 10:24:58