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

无法通过AWS CloudFront连接EC2上WordPress站点的问题排查

问题排查与解决方案

核心问题原因

  • CloudFront IP绑定逻辑错误:CloudFront是分布式CDN,边缘节点IP动态变化,且HTTPS访问依赖SNI(服务器名称指示)。直接通过traceroute获取IP并绑定hosts的方式,会导致浏览器无法发送正确的SNI头,CloudFront无法匹配到你的分发配置,最终连接失败。
  • WordPress站点URL不匹配:WordPress默认会硬编码站点URL,若未设置为CloudFront的自定义域名,会引发资源路径错误或跳转异常。
  • CloudFront源/缓存配置疏漏:源协议策略、请求头转发设置不正确,导致请求无法正确传递到ELB和EC2实例。

分步解决方法

1. 修正hosts与CloudFront域名配置

  • 确保CloudFront分发的**备用域名(CNAME)**已添加你测试用的自定义域名(如dev.yourdomain.com)
  • 通过nslookup [你的CloudFront分发域名]获取一个边缘节点IP,在hosts文件中绑定dev.yourdomain.com到该IP(仅用于测试,生产环境需配置DNS解析)
  • 确认CloudFront关联的ACM证书已覆盖该自定义域名

2. 调整CloudFront源与缓存行为

  • 源协议策略:设置为HTTPS only或Match viewer,确保CloudFront通过HTTPS访问后端ELB(ELB已部署ACM证书)
  • 请求头转发配置:
    • 转发Host头:选择Viewer request(若ELB已配置对应域名),或手动设置为ELB的域名作为自定义头,否则WordPress无法识别正确的主机名
    • 开启Cookie、Authorization头转发(在缓存行为中配置),保证WordPress会话功能正常

3. 修正WordPress站点URL

  • 后台修改:登录WordPress后台,在「设置-常规」中,将WordPress地址(URL)和站点地址(URL)修改为CloudFront的自定义域名(如https://dev.yourdomain.com)
  • 后台无法访问时:修改EC2实例上的wp-config.php文件,添加以下代码:
define('WP_HOME','https://dev.yourdomain.com');
define('WP_SITEURL','https://dev.yourdomain.com');

4. 验证安全组配置

  • ELB安全组允许CloudFront边缘节点的HTTPS流量(测试阶段可临时开放0.0.0.0/0的443端口,生产环境需使用AWS官方发布的CloudFront IP地址范围)
  • EC2实例安全组允许ELB所在安全组的HTTPS流量

测试流程

  1. 刷新CloudFront缓存:手动创建Invalidation,路径填写/*
  2. 清除本地浏览器缓存,访问自定义域名
  3. 若仍有问题,查看CloudFront访问日志,检查请求是否到达分发节点,以及转发到ELB时的错误码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 09:40:18