You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

站点域名经CloudFront CDN时Strapi管理后台无法登录的问题排查

解决CloudFront代理后Strapi管理后台登录401问题

一、Strapi端配置调整

  1. 修正服务器配置文件(config/server.js)

    • 确保url设置为CloudFront分配的域名(如https://your-cdn-domain.com),而非服务器内网IP或原始域名
    • 开启CORS并允许CDN域名,同时开启凭据传递:
      module.exports = ({ env }) => ({
        host: env('HOST', '0.0.0.0'),
        port: env.int('PORT', 1337),
        app: {
          keys: env.array('APP_KEYS'),
        },
        url: env('PUBLIC_URL', 'https://your-cdn-domain.com'),
        cors: {
          enabled: true,
          origin: ['https://your-cdn-domain.com'],
          credentials: true,
        },
      });
      
    • 调整Session中间件的Cookie配置(config/middlewares.js),适配HTTPS跨域场景:
      module.exports = [
        // 保留其他默认中间件
        {
          name: 'strapi::session',
          config: {
            cookie: {
              secure: true,
              domain: '.your-cdn-domain.com',
              sameSite: 'none',
            },
          },
        },
        // 保留其他默认中间件
      ];
      
  2. 修正管理员JWT配置(config/admin.js)
    确保登录Cookie的安全属性开启:

    module.exports = ({ env }) => ({
      auth: {
        secret: env('ADMIN_JWT_SECRET'),
        cookie: {
          secure: true,
          sameSite: 'none',
        },
      },
      // 保留其他管理员配置
    });
    

二、CloudFront CDN配置调整

  1. 转发关键HTTP头部
    在缓存策略中添加以下头部转发规则:

    • Host:转发至源站,确保Nginx能识别正确域名
    • X-Forwarded-For:转发客户端真实IP
    • X-Forwarded-Proto:转发请求协议(HTTPS)
    • X-Forwarded-Host:转发CDN域名
      这些头部能让Strapi识别真实请求来源,正确生成和验证会话Cookie。
  2. 允许Cookie传递
    在行为设置中,将Cookie转发规则设为转发所有Cookie(或至少strapi.sid、strapi.jwt这两个Strapi核心会话Cookie),否则登录状态无法同步到源站。

  3. 禁用管理后台路径缓存
    对/admin/*路径设置缓存策略为不缓存,避免动态登录请求被静态缓存覆盖。

三、Nginx配置补充

确保代理配置中转发必要头部,让Strapi识别真实请求协议:

server {
  listen 443 ssl;
  server_name your-origin-domain.com;

  location / {
    proxy_pass http://localhost:1337;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_cache_bypass $http_upgrade;
  }
}

其中X-Forwarded-Proto是核心,确保Strapi知道请求是HTTPS,从而生成带secure属性的Cookie。

四、验证步骤

  1. 重启Strapi和Nginx服务
  2. 清除浏览器缓存与Cookie,重新尝试登录
  3. 检查浏览器控制台,确认/me等接口的请求头包含正确Cookie,响应状态码为200

内容的提问来源于stack exchange,提问作者XO39

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:02:37