WordPress升级时wp-admin报504错误(AWS CloudFront环境)
解决CloudFront缓存/wp-admin导致WordPress升级时504的问题
我之前帮客户排查过几乎一模一样的情况,这绝对是CloudFront缓存规则配置不当导致的,下面给你拆解根因和解决办法:
问题根因
CloudFront默认缓存了所有匹配默认行为的路径,包括/wp-admin这类动态管理路径。当你执行WordPress升级时,后端服务器会替换、更新wp-admin下的核心文件,但CloudFront还在返回之前缓存的旧版本内容,导致请求与后端当前状态不匹配——要么是旧缓存的页面调用了已被删除的后端资源,要么是后端在升级过程中短暂不可用,CDN缓存了504错误状态,直到缓存TTL到期后才会重新拉取正常内容,这就是为什么一段时间后管理页面会自行恢复。
永久解决办法:配置CloudFront排除管理路径缓存
直接在CloudFront分发里添加专属行为,让/wp-admin及相关路径跳过缓存,每次请求都直接回源:
- 登录AWS CloudFront控制台,找到你的分发,进入「行为」标签页
- 点击「创建行为」,路径模式填写
/wp-admin/* - 缓存策略选择「CachingDisabled」(完全不缓存),或者自定义策略设置TTL为0,确保所有请求都转发到源站
- 调整行为优先级,让这个专属行为的优先级高于默认行为(CloudFront会优先匹配更具体的路径规则)
- 额外建议:给
/wp-login.php、/wp-cron.php也创建同样的不缓存行为,避免后续出现登录、定时任务相关的缓存问题
临时应急方案(已出现504时)
如果现在管理页面还打不开,不用等缓存过期,手动刷新CloudFront的缓存即可:
- 在CloudFront控制台进入「缓存」→「创建无效化」
- 输入路径
/wp-admin/*,提交无效化请求 - 等待几分钟(通常1-5分钟),无效化完成后就能正常访问wp-admin了
内容的提问来源于stack exchange,提问作者Kelvin Low
相关产品推荐
相关产品推荐

