### [Nginx接入CDN后日志全是节点IP,怎样记录真实客户端地址](https://www.jiyueip.com/article/7199) **Published:** 2026-07-21T03:47:51 **Author:** 斑斓助理 **Excerpt:** Nginx接入CDN后连接源是边缘节点,需按CDN官方文档配置可信IP段和real_ip模块,不能无条件信任外部请求头。 Nginx 接入 CDN 后,访问日志里的 `$remote_addr` 变成一组边缘节点 IP,这是正常现象:与源站建立 TCP 连接的是 CDN,而不是访客浏览器。要记录真实客户端地址,不能简单地从任意请求头取第一个 IP,正确做法是先建立“哪些代理可信”的边界,再让 Nginx 的 real\_ip 模块只处理这些可信来源。 ## 先保留两种地址,排障会更清楚 一类是源站实际看到的连接地址,用于判断请求从哪个 CDN 节点回源;另一类是经过可信代理链还原的客户端地址,用于访问分析、限流和安全审计。只保留还原后的地址,会在 CDN 配置错误时失去原始证据。 Nginx 启用 real\_ip 后,`$remote_addr` 通常会被替换成解析后的客户端地址,原始连接地址可通过 `$realip_remote_addr` 保留。日志格式应同时记录两者,以及当前 CDN 使用的转发头和请求标识。 ## 配置前必须确认三项官方信息 - **回源地址段:**从所用 CDN 的官方文档、API 或控制台获取 IPv4 和 IPv6 网段。 - **真实 IP 请求头:**不同服务商可能使用不同头字段,必须按当前官方说明选择。 - **代理链规则:**确认该头存放单个地址还是地址列表,以及是否需要递归解析。 不要从搜索结果里复制多年未更新的 IP 段,也不能照搬另一家 CDN 的头名称。极跃圈的[网址导航](https://www.jiyueip.com/hao)可用于查找 DNS、CDN 和 IP 检测工具,但生产配置仍应以当前服务商官方资料为准。 ## 一份便于理解的 Nginx 配置骨架 ``` # 仅示意:请替换成 CDN 官方发布的实际网段 set_real_ip_from 192.0.2.0/24; set_real_ip_from 2001:db8::/32; # 替换成 CDN 官方指定的真实客户端 IP 头 real_ip_header CDN-Client-IP; # 只有官方说明该头包含可信代理链时才按要求启用 real_ip_recursive on; log_format cdn_main '$remote_addr real_peer=$realip_remote_addr ' 'xff="$http_x_forwarded_for" request="$request" status=$status'; ``` 示例中的地址属于文档示例网段,不能直接用于生产。真实配置要包含服务商公布的全部必要地址段,并通过配置管理发布。若 CDN 提供的是单一可信客户端地址头,是否需要 `real_ip_recursive` 应按照该头的语义决定,不能机械开启。 ## 为什么不能无条件信任 X-Forwarded-For 任何能直接连接源站的客户端,都可以自己发送 `X-Forwarded-For`。如果 Nginx 对所有来源都信任该头,攻击者就能把日志、应用限流和访问控制中的地址伪造成任意值。更危险的是,应用可能据此误判内网地址或受信用户。 `set_real_ip_from` 的作用,就是限定只有来自指定 CDN 节点的请求才有资格改写客户端地址。非可信来源携带的相同头字段不应改变 `$remote_addr`。如果源站还接受负载均衡器、WAF 或内部反向代理回源,应逐层画清代理链,并只添加实际存在的可信网络。 ## 源站最好同时限制只能由 CDN 回源 在云安全组、防火墙或源站前置网关中,只允许 CDN 官方回源网段访问业务端口,可以减少绕过 CDN 直连源站的机会。管理端口不要与 CDN 白名单混在一起,SSH、面板或数据库应使用独立的受控入口。 限制前先确认健康检查、证书验证、监控探针和其他合法回源是否使用不同地址。贸然只留下 CDN 段,可能让监控、自动续期或内部服务中断。变更时应先添加规则并验证,再删除旧来源,保留回滚版本。 ## 正向和反向测试缺一不可 1. 通过 CDN 访问自有测试页面,确认日志中的还原地址与测试客户端公网 IP 一致。 2. 核对 `$realip_remote_addr` 是否为 CDN 回源节点,确保原始连接证据仍在。 3. 从获授权的非 CDN 网络直连源站,主动携带伪造的真实 IP 头,确认 Nginx 不采信。 4. 测试 IPv4 和 IPv6 客户端,避免只维护了一类 CDN 地址段。 5. 检查应用、WAF、限流和日志分析系统使用的是哪个字段,防止 Nginx 改对了但应用仍读旧头。 这些测试只应针对自己管理或明确获授权的源站。公开扫描他人服务器既不能验证自己的配置,也可能违反规则。 ## CDN 地址段变化后怎样维护 优先使用服务商提供的公告、API 或机器可读列表,定期拉取后先做格式校验和差异比较。发现新增网段时,先加入可信列表和防火墙并做灰度验证;旧网段只有在官方确认移除、观察期无回源后再删除。自动化更新也应经过审核、配置测试和失败告警,不能下载后直接覆盖生产。 最后还要按隐私策略管理 IP 日志:明确用途、限制查询和导出权限、设置保存期限,不在调试日志中记录密码、令牌或无关正文。真实客户端 IP 配置的目标,是让日志可用且不可伪造,不是尽可能长久地保存每一个访客标识。 **Tags:** CDN安全, HTTP请求头, 代理日志, 隐私与合规 **Categories:** 行业洞察 ---