如何将CNAME指向EC2实例IP以访问Spring Boot API
解决方案
1. 配置CNAME域名解析
- 登录AWS Route 53控制台,找到
myapp.io的域名托管区 - 创建CNAME记录,将
api.myapp.io指向EC2实例的公网域名(可在EC2实例详情页获取,格式类似ec-xx-xx-xx-xx.compute-1.amazonaws.com) - 等待DNS解析生效(通常需要几分钟到几小时)
2. 选择反向代理方案(二选一即可)
方案一:在EC2实例上部署Nginx做反向代理
- 以Ubuntu系统为例,安装Nginx:
sudo apt update && sudo apt install nginx - 创建Nginx配置文件
/etc/nginx/sites-available/api.myapp.io,写入以下内容:server { listen 80; server_name api.myapp.io; location /ContextName/api { proxy_pass http://localhost:8080/ContextName/api; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } - 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/api.myapp.io /etc/nginx/sites-enabled/ sudo nginx -t # 校验配置语法 sudo systemctl restart nginx - 调整EC2安全组,开放80端口的公网入站流量(或限制指定IP段)
方案二:使用AWS应用负载均衡(ALB)
- 进入AWS EC2控制台,创建应用负载均衡,选择「互联网-facing」类型,监听端口设置为80
- 创建目标组,将你的EC2实例加入,目标端口填8080
- 在负载均衡的监听规则中,添加路径匹配
/ContextName/api,转发至创建好的目标组 - 回到Route 53,将
api.myapp.io的CNAME记录指向负载均衡的域名(而非EC2实例域名) - 调整安全组:EC2安全组允许来自负载均衡安全组的8080端口流量;负载均衡安全组允许80端口的公网入站流量
3. 可选:简化Spring Boot访问路径
若希望直接通过http://api.myapp.io/api访问(去掉ContextName),修改Spring Boot配置文件:
- 打开
application.properties,添加:
若要彻底移除上下文路径,设置为server.servlet.context-path=/ContextNameserver.servlet.context-path=/ - 重启Spring Boot应用生效
内容的提问来源于stack exchange,提问作者Praful Jha
相关产品推荐
相关产品推荐

