在子目录托管Tomcat Web应用 能否通过根域名子路径访问EC2上的Tomcat服务
该需求完全可以实现,以下是AWS技术栈下3种成熟的落地方案:
方案1:通过CloudFront做统一分发
为example.com创建CloudFront分发,新增路径匹配规则:当请求路径匹配/abc/*时,将源站设置为你当前对接Tomcat的ELB地址。如果你的Tomcat应用部署在根路径下,可以配置CloudFront的路径重写功能,将请求路径中的/abc前缀剥离后再转发给ELB。最后在Route53中将example.com的解析记录指向CloudFront分发域名,同时为CloudFront配置覆盖example.com的SSL证书即可。方案2:通过ALB(应用型负载均衡)路径路由实现
如果你当前使用的是AWS ALB(原ELB的应用型版本),且example.com已经解析到该ALB上,可直接在ALB的HTTPS监听器中添加转发规则:匹配/abc/*路径的请求转发到Tomcat所在的EC2目标组,同时可开启ALB的路径重写能力剥离/abc前缀,适配Tomcat的实际部署路径。方案3:在
example.com的后端配置反向代理
如果example.com本身有独立的后端服务(比如Nginx、Apache等),可以直接添加反向代理规则实现路径转发,以Nginx为例配置参考如下:location /abc/ { proxy_pass https://abc.example.com/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; }注意
proxy_pass地址末尾的斜杠会自动将/abc/xxx的请求转为/xxx转发到目标服务。
部署注意事项:
- 你可以选择将Tomcat应用的Context Path修改为
/abc,或是在转发层配置路径重写,避免请求路径不匹配导致的404错误 - 用到的SSL证书需要同时覆盖
example.com和abc.example.com,避免出现证书不信任报错 - 如果应用内有硬编码的静态资源路径、内部跳转逻辑,需要调整为相对路径或是适配
/abc前缀,避免资源加载失败、跳转错误的问题
内容的提问来源于stack exchange,提问作者dharam
相关产品推荐
相关产品推荐

