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

Magento2保存产品及目录索引出现405 Not Allowed错误求解

问题根因

你遇到的405错误是Magento触发缓存清除时发送的PURGE请求被拒绝导致的:
从debug日志可见,Magento保存产品时会向http://www.example.us:80/发送缓存失效请求,而当前环境80端口由Varnish监听,Varnish默认未授权本机发起的PURGE请求,直接返回405错误,进而导致产品保存、索引重建操作失败。

修复步骤
  • 第一步:配置Varnish允许本机PURGE请求
    编辑Varnish配置文件(通常为/etc/varnish/default.vcl),在对应配置段添加授权规则:
# 配置允许清除缓存的IP白名单
acl purge {
    "127.0.0.1";
    "localhost";
}

sub vcl_recv {
    # 校验PURGE请求权限
    if (req.method == "PURGE") {
        if (!client.ip ~ purge) {
            return (synth(405, "Not allowed"));
        }
        return (purge);
    }
    # 原有其他配置保持不变
}

修改完成后重启Varnish服务生效:systemctl restart varnish

  • 第二步:修正Magento基础URL与代理配置
    登录Magento后台进入「商店 > 配置 > 通用 > Web」,统一配置HTTPS协议:
    • 不安全基础URL:https://www.example.us/
    • 安全基础URL:https://www.example.us/
    • 「前端使用安全URL」「管理端使用安全URL」均设为是
      也可以直接通过命令行完成配置:
bin/magento config:set web/unsecure/base_url https://www.example.us/
bin/magento config:set web/secure/base_url https://www.example.us/
bin/magento config:set web/secure/use_in_frontend 1
bin/magento config:set web/secure/use_in_adminhtml 1
bin/magento config:set web/secure/offloader_header X-Forwarded-Proto

配置完成后清空Magento缓存:bin/magento cache:flush

  • 第三步:清理Nginx冗余配置
    你当前443端口的location配置中存在和反向代理无关的FastCGI参数,删除以下两行避免配置混淆即可:
fastcgi_buffer_size                 32k;
fastcgi_buffers                     4 32k;

修改完成后重载Nginx生效:nginx -s reload

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:36:03