如何通过AWS Lightsail私有域名在容器部署间发送HTTPS请求?
问题根因及遗漏配置说明
- 私有域名解析范围配置错误
*.service.local后缀的Lightsail私有域名仅支持在同区域的Lightsail容器运行环境、Lightsail云服务器内部解析,你当前将该域名写在前端HTML代码中,由终端用户的本地浏览器发起解析请求,浏览器不在Lightsail私有网络内,自然会返回net::ERR_NAME_NOT_RESOLVED错误。 - 私有域名协议匹配错误
Lightsail容器服务的.service.local私有域名默认仅支持HTTP协议访问,不支持HTTPS,平台没有为这类内部域名签发可信SSL证书,所以你发起HTTPS请求会直接失败。 - 混合内容报错属于浏览器固有安全限制
所有HTTPS页面默认禁止发起未加密的HTTP请求,这是Chrome等浏览器的默认安全规则,和Lightsail配置无关。
可行的修正配置方案
- 后端代理优化方案
放弃让前端直接调用receiver服务的逻辑,所有请求统一从sender服务的后端转发到receiver的私有域名HTTP地址。你之前提到的Next.js API路由方案本身是合理的,安全问题可以通过以下配置解决:- 给API路由添加来源校验,仅允许你自己的前端域名访问
- 配置receiver容器的网络访问规则,仅接受sender容器的私有IP段请求,完全阻断公网访问路径
- 接口添加内部鉴权参数,避免被恶意调用
- 自建私有DNS+证书方案
如果不想走后端代理,可以在同区域部署私有DNS服务器,为receiver分配自定义私有域名,同时为该域名签发自签SSL证书,将证书根证书导入sender容器的可信证书存储,即可实现私有域名HTTPS访问。 - VPC集成私有证书方案
将Lightsail容器服务接入自定义VPC,通过AWS ACM签发私有SSL证书绑定自定义私有域名,关联到receiver服务即可实现私有域名HTTPS访问。
内容的提问来源于stack exchange,提问作者bluemoon
相关产品推荐
相关产品推荐

