DigitalOcean Strapi管理面板重定向求助:HTTPS混合内容拦截问题
解决Strapi管理面板混合内容(HTTP/HTTPS)拦截问题
我之前在DigitalOcean部署Strapi时也碰到过一模一样的问题,核心原因是Strapi还在生成HTTP协议的管理面板资源链接,导致浏览器触发混合内容拦截。给你几个关键的配置调整步骤,应该能快速解决:
1. 修改Strapi核心服务器配置
找到Strapi项目根目录下的config/server.js(Strapi v4版本),重点调整url和admin相关配置,强制Strapi使用HTTPS域名:
module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1337), // 替换成你的HTTPS域名,比如 https://your-domain.com url: env('STRAPI_URL', 'https://your-domain.com'), app: { keys: env.array('APP_KEYS'), }, admin: { url: '/admin', // 也可以直接指定完整HTTPS路径:'https://your-domain.com/admin' serveAdminPanel: true, }, });
如果是Strapi v3版本,配置文件路径为config/environments/production/server.js,逻辑一致,重点是把url字段设置为你的HTTPS域名。
2. 调整Admin面板专属配置
打开config/admin.js(v4版本),确保admin模块的URL配置和HTTPS域名对齐:
module.exports = ({ env }) => ({ auth: { secret: env('ADMIN_JWT_SECRET'), }, url: '/admin', serveAdminPanel: true, });
3. 确保反向代理(如Nginx)传递HTTPS头
如果用Nginx做反向代理,必须添加X-Forwarded-Proto头,让Strapi知道客户端是通过HTTPS访问的。典型的Nginx配置片段:
server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/your/ssl/cert.pem; ssl_certificate_key /path/to/your/ssl/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; // 关键:告诉Strapi当前请求是HTTPS协议 proxy_set_header X-Forwarded-Proto $scheme; } }
4. 清除缓存并重启服务
最后别忘了:
- 彻底清除浏览器缓存(尤其是静态资源缓存)
- 重启Strapi服务:生产环境先执行
npm run build,再用npm run start或PM2重启进程
完成这些步骤后,管理面板应该就能正常通过HTTPS加载,混合内容的拦截问题也会消失。
内容的提问来源于stack exchange,提问作者Umid Negmatullayev
相关产品推荐
相关产品推荐

