AWS EBS后端HTTPS路由配置问题求助
解决子域名HTTPS路由到EBS HTTP后端的方案
现有问题梳理
- 你直接在Route53添加A记录指向EBS环境,导致访问子域名时,浏览器会因证书不匹配(EBS域名与你的子域名不一致)报错,且无法正常加载HTTPS内容。
- 重复为子域名创建AWS ACM证书属于冗余操作,因为子域名已有CPanel提供的SSL证书,两者会产生冲突。
可行解决方案(两种方案按需选择)
方案一:利用CPanel反向代理(推荐,适配现有SSL配置)
由于你的子域名已通过CPanel配置好SSL,直接通过反向代理实现转发即可:
- 登录CPanel后台,找到反向代理工具
- 创建代理规则:
- 目标URL填写EBS完整地址:
http://crm-env.eba-tud935mv.ap-south-1.elasticbeanstalk.com/api/v1 - 匹配路径设为
/*,确保所有请求路径都能转发 - 保存规则后,CPanel会自动完成SSL终止:用户访问
https://crmbackened.metablocktechnologies.io/时,CPanel服务器先处理HTTPS请求,再转发到EBS的HTTP后端,最后将响应返回给用户
- 目标URL填写EBS完整地址:
- 验证:访问子域名,确认能获取EBS响应,同时检查浏览器控制台,确认Cookie已标记为
Secure
方案二:使用AWS CloudFront实现SSL转发(适配AWS生态)
若想保留Route53解析,可通过CloudFront完成HTTPS到HTTP的转发:
- 创建CloudFront分发
- 源域名填写EBS环境域名:
crm-env.eba-tud935mv.ap-south-1.elasticbeanstalk.com - 源路径填写
/api/v1 - 源协议选择
HTTP only(匹配EBS后端的HTTP配置) - 缓存行为设置为
转发所有请求到源,缓存策略选无缓存,避免后端更新不生效
- 源域名填写EBS环境域名:
- 配置SSL证书
- 在CloudFront分发设置中,自定义SSL证书选择你在AWS ACM创建的
crmbackened.metablocktechnologies.io证书(注意:ACM证书必须创建在us-east-1区域,CloudFront仅支持该区域的证书) - 备用域名(CNAME)填写
crmbackened.metablocktechnologies.io
- 在CloudFront分发设置中,自定义SSL证书选择你在AWS ACM创建的
- 更新Route53记录
- 将原A记录改为别名记录,指向CloudFront分发域名,而非直接指向EBS
- 验证
- 等待CloudFront分发生效(约10-15分钟),访问子域名确认HTTPS正常,Cookie可正常设置
关键注意事项
- 无论用哪种方案,后端设置Cookie时必须添加
Secure属性(Node.js中可在Cookie选项里设置secure: true),否则浏览器不会在HTTPS请求中携带Cookie - 方案二需确保ACM证书在
us-east-1区域创建,否则CloudFront无法识别 - 方案一无需改动Route53解析,保持子域名原DNS指向CPanel服务器即可
内容的提问来源于stack exchange,提问作者vasaniyakush
相关产品推荐
相关产品推荐

