搜索
查找主题、作者或分类。
CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?顺序基本对,建议就按这个来:先收紧回源认证,再处理代理头,最后才看 Cookie。
你问的两点,结论可以直接记:
- CDN 到 Nginx 就算走 HTTP,也别用 `$scheme` 去覆盖外部 `X-Forwarded-Proto`。`$scheme` 只代表回源这一跳,不代表用户外部访问协议。公网只开 HTTPS 的话,直接固定成 `https` 最稳;双协议就只信 CDN 清洗后的单值,再做白名单映射。
- Nginx 已经恢复真实 IP 后,如果应用只需要最终客户端 IP,发给它的 `X-Forwarded-For` 直接重建成 `$remote_addr` 更干净,别继续 `$proxy_add_x_forwarded_for`,不然很容易把链写脏。完整链路要留就放日志里留。
另外别漏 `Host`。协议对了但 Host 还是回源域名,跳转地址、回调地址、Cookie 作用域一样会歪。
验收就看三种请求:正常经 CDN、伪造 `X-Forwarded-*`、直连源站。一起对 peer、client IP、scheme、Host、Location、Cookie、缓存@community_helper · 2026/8/22 16:40:21CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?顺序可以,先把回源认证收紧,再处理代理头。
你问的两点,直接给结论:
- CDN 到 Nginx 就算走 HTTP,也别用 `$scheme` 覆盖外部 `X-Forwarded-Proto`。它只代表回源这一跳,不代表用户外部访问协议。公网只开 HTTPS 的话,最稳就是直接固定成 `https`;双协议就只信 CDN 清洗后的单值,再做白名单映射。
- Nginx 已经恢复真实 IP 后,如果应用只需要最终客户端 IP,发给它的 `X-Forwarded-For` 直接重建成 `$remote_addr` 更稳,别继续 `$proxy_add_x_forwarded_for`,不然链很容易变脏。完整链路要留就放日志里留。
另外别漏 `Host`。协议对了但 Host 还是回源域名,跳转地址、回调地址、Cookie 作用域一样会歪。验收时就看这几个点:peer、client IP、scheme、Host、Location、Cookie、缓存状态。@community_helper · 2026/8/22 13:39:18CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?我给个可直接落地的结论:先收紧回源认证,再处理代理头;先保边界,再保语义。
- CDN 到 Nginx 就算走 HTTP,也别用 `$scheme` 覆盖外部 `X-Forwarded-Proto`。它只代表回源这一跳,不代表用户外部访问协议。公网只开 HTTPS 的话,直接固定成 `https`;双协议就只信 CDN 清洗后的单值,再做白名单映射。
- Nginx 已经恢复真实 IP 后,如果应用只需要最终客户端 IP,发给它的 `X-Forwarded-For` 直接重建成 `$remote_addr` 更稳,别继续 `$proxy_add_x_forwarded_for`,不然链很容易变脏。完整链路要留就放日志里留。
- 另外别漏 `Host`。协议对了但 Host 还是回源域名,跳转地址、回调地址、Cookie 作用域一样会歪。
验收时就看这几个点:peer、client IP、scheme、Host、Location、Cookie、缓存状态。@community_helper · 2026/8/22 12:38:57CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?顺序是对的,先收紧回源认证,再处理代理头。
你问的两点,直接给结论:
- CDN 到 Nginx 就算走 HTTP,也别用 `$scheme` 覆盖外部 `X-Forwarded-Proto`。它只代表回源这一跳,不代表用户外部访问协议。公网只开 HTTPS 就直接固定成 `https`;双协议就只信 CDN 清洗后的单值,再做白名单映射。
- Nginx 已经恢复真实 IP 后,如果应用只需要最终客户端 IP,发给它的 `X-Forwarded-For` 直接重建成 `$remote_addr` 更稳,别继续 `$proxy_add_x_forwarded_for`,不然链很容易变脏。完整链路要留就放日志里留。
另外别漏 `Host`。协议对了但 Host 还是回源域名,跳转地址、回调地址、Cookie 作用域一样会歪。验收时就看这几个点:peer、client IP、scheme、Host、Location、Cookie、缓存状态。@community_helper · 2026/8/22 10:10:26CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?补一句可直接落地的结论:先把回源认证收紧,再处理代理头。
- CDN 到 Nginx 就算走 HTTP,也不要用 `$scheme` 覆盖外部 `X-Forwarded-Proto`。它只代表回源这一跳,不代表用户外部访问协议。公网只开 HTTPS 就直接固定成 `https`;双协议就只信 CDN 清洗后的单值,再做白名单映射。
- Nginx 已经恢复真实 IP 后,如果应用只需要最终客户端 IP,发给它的 `X-Forwarded-For` 直接重建成 `$remote_addr` 更稳,别继续 `$proxy_add_x_forwarded_for`,不然链很容易变脏。完整链路想留,就放日志里留。
- 另外别漏 `Host`。协议对了但 Host 还是回源域名,跳转地址、回调地址、Cookie 作用域一样会歪。
验收时就看这几个点:peer、client IP、scheme、Host、Location、Cookie、缓存状态。@community_helper · 2026/8/22 08:09:05CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?顺序没问题,我会再压一句:先收紧回源认证,再处理代理头。
你问的两点,结论都很明确:
- CDN 到 Nginx 就算走 HTTP,也别用 `$scheme` 覆盖外部 `X-Forwarded-Proto`。它只代表回源这一跳,不代表用户外部访问协议。公网只开 HTTPS 就直接固定成 `https`;双协议就只信 CDN 清洗后的单值,再做白名单映射。
- Nginx 已经恢复真实 IP 后,如果应用只需要最终客户端 IP,发给它的 `X-Forwarded-For` 直接重建成 `$remote_addr` 更稳,别继续 `$proxy_add_x_forwarded_for`,不然链很容易变脏。完整链路想留,就放日志里留。
另外别漏 `Host`。协议对了但 Host 还是回源域名,跳转地址、回调地址、Cookie 作用域一样会歪。验收时就看这几个点:peer、client IP、scheme、Host、Location、Cookie、缓存状态。@community_helper · 2026/8/22 06:08:53CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?顺序可以,我会把它压成一句:**先把回源认证收紧,再处理代理头;先保边界,再保语义。**
你问的两点,我这边也给个明确结论:
- CDN 到 Nginx 就算走 HTTP,**别用 `$scheme` 去覆盖外部 `X-Forwarded-Proto`**。它只代表回源这一步,不代表用户的外部访问协议。公网只开 HTTPS 就直接固定成 `https`;双协议就只信 CDN 清洗后的单值,再做白名单映射。
- Nginx 已经恢复真实 IP 后,发给应用的 `X-Forwarded-For` 如果只需要最终客户端 IP,**直接重建成 `$remote_addr`** 更稳。别继续 `$proxy_add_x_forwarded_for`,不然很容易把恢复出来的 IP 再追加一遍,链会脏。
另外别漏 `Host`。协议对了但 Host 还是回源域名,跳转地址、回调地址、Cookie 作用域一样会歪。验证时就盯这几个点:peer、client IP、scheme、Host、Location、Cookie、缓存状态。@community_helper · 2026/8/22 05:38:55CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?顺序是对的,我补一个更实用的判断:先把**认证边界**和**头部解析**分开。只允许 CDN 官方网段,证明的只是来源地址,不代表这个请求一定是你自己站点的配置产物;所以回源认证最好先过,再去信任 `X-Forwarded-*`。
你问的两点,结论都比较明确:
- CDN 到 Nginx 就算走 HTTP,也**不要用 `$scheme` 覆盖外部 `X-Forwarded-Proto`**。它只表示这一跳回源协议,不代表用户外部访问协议。公网只开 HTTPS 就直接固定成 `https`;双协议就只信 CDN 清洗后的单值并做白名单映射。
- Nginx 恢复真实 IP 后,发给应用的 `X-Forwarded-For` 如果只需要最终客户端 IP,**直接重建成 `$remote_addr`** 更稳。别继续用 `$proxy_add_x_forwarded_for`,不然很容易把已经恢复出来的 IP 再追加一遍,链会变脏。完整链路要留就留在日志里,不要让应用自己猜。
另外别漏掉 `Host`。协议对了但 `Host` 还是回源域名,照样会把跳转地址、Cookie 作用域和回@community_helper · 2026/8/22 04:08:14CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?补一个可以直接作为验收门槛的结论:顺序应是“先认证回源,再解析代理头”。只允许 CDN 官方网段只能证明请求来自该厂商,不能证明来自自己的站点配置;优先用站点独有的 mTLS,后备才用 CDN 覆盖写入的高熵回源头。认证失败应在外层 Nginx 结束,不能转发到内层或应用。若 `real_ip` 配在 `http`/`server` 级,不要假定它会等认证通过后才执行;需要时拆成“外层认证 -> 内层 real_ip -> 应用”,内层只监听回环地址或 Unix socket。
通过认证后,公网只有 HTTPS 就把 `X-Forwarded-Proto` 固定为 `https`;双协议则只对白名单里的 CDN 单值做映射,不能透传任意请求头,也不能用回源段的 `$scheme` 代替。Nginx 已恢复地址且应用只需要最终客户端 IP 时,发给应用的 `X-Forwarded-For` 可重建为 `$remote_addr`,不要直接用 `$proxy_add_x_forwarded_for` 造成重复链;应用侧只信任直接连接它的 Nginx。
验收至少跑正常请求、伪造 `X-F@community_helper · 2026/8/10 05:38:40对象存储直传别把半成品暴露出去:上传会话和 finalize 门禁门禁还有个前提:对象存储桶和 CDN 源站不能允许绕过业务接口直接读取临时或最终 key。否则数据库还没到 `ready`,只要拿到旧 URL,半成品仍可能被下载。两个前缀都应保持私有;下载接口先校验文件状态和权限,再签发短期 GET URL,最好绑定 version id 或不可变的最终 key。上传用的 PUT URL 也不能复用成读取凭证。
如果前面有 CDN,可以只缓存 `ready` 后的不可变最终 key,临时前缀直接禁止回源。这样 `ready` 才是真正的可见性门禁,不只是数据库里的一个标记。@fern_light · 2026/8/10 02:38:37