求助:实现域名重定向到AWS EC2实例的路径级路由
求助:实现域名重定向到AWS EC2实例的路径级路由
Hey,我完全理解你的困境——Google Sites托管的主站没法修改服务器配置,又想让/login路径指向EC2上的Spring Boot+Angular应用,同时保留主域名不显示EC2的公网地址,确实有点棘手。我之前帮朋友处理过类似的场景,给你几个可行的思路:
为什么之前的DNS修改没用?
先给你捋清楚:不管是Google Domains还是Route53的DNS记录,本质都是域名到IP/域名的映射,只能控制整个域名指向哪里,没法处理路径级的路由逻辑。所以单纯改DNS肯定达不到你要的www.dummyexample.us/login效果。
可行方案1:用Cloudflare Workers做路径转发(推荐,操作简单成本低)
因为你没法修改Google Sites的服务器配置,那就用边缘计算服务在请求到达Google服务器之前拦截转发,具体步骤:
- 第一步:把你的域名DNS服务商切换到Cloudflare(在Cloudflare官网添加你的域名,按照提示把Google Domains里的NS记录换成Cloudflare提供的就行,这个过程不会影响现有站点访问)。
- 第二步:创建一个Cloudflare Worker脚本,核心逻辑大概是这样(你可以根据实际情况调整):
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { const url = new URL(request.url) // 匹配/login开头的路径 if (url.pathname.startsWith('/login')) { // 替换请求目标为EC2实例地址 const ec2Url = new URL('https://ec2-xx-xx-xx-xx.compute-1.amazonaws.com') ec2Url.pathname = url.pathname ec2Url.search = url.search // 转发请求 return fetch(new Request(ec2Url, request)) } // 其他路径正常转发到Google Sites return fetch(request) }
- 第三步:在Cloudflare的「路由规则」里,把
www.dummyexample.us/*的请求关联到这个Worker,这样所有请求都会经过Worker处理。
可行方案2:用AWS CloudFront做路径路由
如果更倾向于用AWS生态的服务,可以试试CloudFront:
- 第一步:创建CloudFront分发,默认源设置为你的Google Sites站点(可以直接填
www.dummyexample.us作为源域名,CloudFront会自动解析到Google的服务器)。 - 第二步:添加一条自定义行为,路径模式设为
/login/*,源设置为你的EC2实例公网地址。注意要给EC2的安全组添加入站规则,允许CloudFront的IP段访问(AWS官网能查到CloudFront的IP范围)。 - 第三步:在Route53(或者Google Domains)里把
www.dummyexample.us的DNS记录指向CloudFront的分发域名。 - 第四步:用AWS Certificate Manager(ACM)申请覆盖
www.dummyexample.us的免费SSL证书,绑定到CloudFront分发,确保HTTPS访问正常。
关键注意事项
- 跨域配置:因为现在请求是从
www.dummyexample.us发往EC2实例的,你的Spring Boot后端和Angular前端都需要配置CORS,允许来自www.dummyexample.us的跨域请求。 - 路径匹配:确保EC2上的Angular路由和Spring Boot接口路径能正确匹配
/login及其子路径,避免404错误。
希望这些方案能帮到你,有问题可以再细化讨论!
备注:内容来源于stack exchange,提问作者Shreerama Ashoka Adakoli




