在 Nginx 使用 CDN(内容分发网络)后,客户访问的 IP 地址不真实是因为 CDN 会将 IP 地址缓存到遍布全球的服务器上。这导致原始服务器的 IP 地址可能无法被准确地追踪。为了解决这个问题,请参考以下建议,以获取 CDN 上客户访问的真实 IP:
思路与建议
在 Nginx 配置文件中,使用 http\_header_t
模块来添加自定义头。在处理请求之前,使用 set\_header
标签添加一个新的头,名为 X-Forwarded-For
,其值为一个逗号分隔的 IP 地址列表,CDN 服务器就在该列表中。
http
server
}
...
为了使代码更简洁,可以将变量的值添加到自定义头 X-Forwarded-For
中。例如,在 Nginx 配置文件中添加以下内容:
http
...
}
server
...
}
...
注意:使用 CDN 时,请确保您选定的 CDN 服务商已支持通过自定义头 X-Forwarded-For
获取真实访问者 IP 地址。部分便宜的 CDN 服务可能默认不支持该功能。
以下是一个完整的示例:
文件名:nginx.conf
http
...
server
...
}
...
}
领取专属 10元无门槛券
手把手带您无忧上云