EC2部署NextJs+Strapi遇问题:Strapi无法通过HTTPS反向代理
问题排查与解决方案:Strapi HTTPS反向代理失败
核心排查与修复步骤
1. 校验Strapi核心配置
确保config/server.js(生产环境对应config/env/production/server.js)配置正确:
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://你的Strapi公网域名'), // 必填:设置为HTTPS公网域名 proxy: true, // 开启代理模式,让Strapi识别反向代理请求头 });
修改后重启Strapi服务,确保配置生效。
2. 修正Nginx配置关键项
结合你提供的配置截图,重点补充/调整以下规则:
server { listen 443 ssl; server_name 你的Strapi域名; # SSL证书配置(保持现有即可) ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; location / { proxy_pass http://localhost:1337; # 必须传递的反向代理请求头 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 告知Strapi请求来自HTTPS proxy_set_header X-Forwarded-Host $host; } # 单独处理Strapi后台的WebSocket请求 location /admin { proxy_pass http://localhost:1337; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; } }
执行nginx -t校验配置语法,无误后执行systemctl reload nginx生效。
3. 验证服务与网络
- 在EC2本机执行
curl http://localhost:1337,确认Strapi服务本身正常响应; - 执行
curl -H "X-Forwarded-Proto: https" http://localhost:1337/admin,检查是否返回HTTPS适配的页面内容; - 确认EC2安全组仅放行
80/443端口对外访问,1337端口仅允许本机访问。
4. 排查日志与进程
- 查看Strapi日志(默认路径
./logs),定位是否有请求头不匹配、权限报错等明确信息; - 若用PM2管理Strapi,确保环境变量中设置了
NODE_ENV=production和PUBLIC_URL。
内容的提问来源于stack exchange,提问作者Luis Fernando Hernandez
相关产品推荐
相关产品推荐

