这个问题我遇到了两次。
第一次是安装 magento 2.4.7 p1 版本后,打开网站首页,浏览器显示 cloudflare 521 的错误页面。
第二次是重新安装 2.4.6 p6 版本后,打开首页,显示 302 重定向过多,提示 ERR_TOO_MANY_REDIRECTS 错误。
逐一分析原因,及解决方法。
cloudflare 521 错误问题
521 错误码,代表服务已挂掉。即,我们搭建的 magento 服务无法响应 cloudflare 的请求。
但是这个说不通,因为我使用非 cloudflare 的域名解析,就能正常访问这个网站,只有 cloudflare 的域名无法访问。而且还有一个特点,就是在 Nginx 日志中看不到 cloudflare 域名的请求日志,只能看到非 cloudflare 域名的请求日志。
后来 Google 了一下,才发现,是默认设置的 cloudflare 加密模式导致的。如果是设置了 Full 或者 Full strict,那么 cloudflare 与 magento 服务之间的通信就需要 HTTPS,而我在安装 magento 时,指配置了 http 的处理配置,还没有配置 https。所以导致,无法响应 cloudflare 的加密请求。
解决方法,就是先设置 magento base-url-secure 例如:
bin/magento setup:store-config:set --base-url="http://www.sunzhongwei.com/"
bin/magento setup:store-config:set --base-url-secure="https://www.sunzhongwei.com/"
bin/magento cache:flush
如果想用自己的证书,就选择 Full 模式,然后用 certbot 安装免费 https 证书。以 ubuntu 24.04 为例,命令如下:
sudo snap install --classic certbot
sudo certbot --nginx -d www.sunzhongwei.com
里面的域名需要替换为自己的域名。再次访问就正常了。
浏览器重定向次数过多问题
因为在安装 magento 时,命令行指指定了 http 的 base url,而之前版本残留的 Nginx 配置中,还有 http 到 https 的重定向配置。
解决方法,也是
bin/magento setup:store-config:set --base-url="http://www.sunzhongwei.com/"
bin/magento setup:store-config:set --base-url-secure="https://www.sunzhongwei.com/"
bin/magento cache:flush
然后再次访问首页,就正常了。
规范的做法
在生产环境服务器安装 magento 时,同时指定 http url 和 https url。
然后用 certbot 安装本地 https 证书。省去调试的麻烦。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式