如何强制Magento 2后台使用HTTP而非HTTPS?解决重定向过多问题
解决Magento 2.1.7后台强制HTTP时的重定向过多问题
遇到这种重定向循环问题,核心原因是服务器层(Nginx/Varnish)的HTTPS强制规则和Magento后台的HTTP配置冲突,导致请求在HTTP和HTTPS之间反复跳转。下面是一步步的排查和修复步骤:
1. 确认并修正Magento核心配置
首先确保Magento的后台URL配置完全指向HTTP,除了禁用web/secure/use_in_adminhtml,还要检查基础URL设置:
- 执行以下命令行配置(替换成你的后台域名):
# 禁用后台使用SSL bin/magento config:set web/secure/use_in_adminhtml 0 # 设置后台非安全基础URL为HTTP bin/magento config:set web/unsecure/base_url http://your-admin-domain.com/ # 保持前台安全URL不变(若前台仍需HTTPS) bin/magento config:set web/secure/base_url https://your-frontend-domain.com/
- 强制清除所有缓存(包括Redis缓存):
bin/magento cache:flush # 若Redis作为缓存存储,额外执行清空命令 redis-cli FLUSHALL
2. 修改Nginx配置,取消后台的HTTPS强制
检查你的Nginx站点配置文件(通常在/etc/nginx/sites-available/目录下),查找是否有针对后台路径(比如/admin)的HTTPS重定向规则,类似这样:
location /admin { return 301 https://$host$request_uri; }
- 将这段规则注释掉(添加
#前缀)或直接删除 - 重启Nginx使配置生效:
systemctl restart nginx
3. 调整Varnish配置,移除后台的HTTPS重定向
打开Varnish的VCL配置文件(通常是/etc/varnish/default.vcl),检查vcl_recv部分是否有针对后台路径的重定向逻辑,比如:
if (req.url ~ "^/admin") { set req.http.Location = "https://" + req.http.host + req.url; return (synth(301, "Moved Permanently")); }
- 删除或注释掉这段重定向代码
- 重启Varnish服务:
systemctl restart varnish
4. 清除浏览器缓存测试
浏览器可能会缓存旧的重定向规则,导致测试结果不准确:
- 清除当前浏览器的缓存和Cookie
- 用无痕/隐私模式打开后台URL,验证是否能正常访问
完成以上步骤后,后台应该可以正常通过HTTP访问,不会再出现重定向循环问题。
内容的提问来源于stack exchange,提问作者Palanikumar
相关产品推荐
相关产品推荐

