You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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做反向代理

  1. 以Ubuntu系统为例,安装Nginx:
    sudo apt update && sudo apt install nginx
    
  2. 创建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;
        }
    }
    
  3. 启用配置并重启Nginx:
    sudo ln -s /etc/nginx/sites-available/api.myapp.io /etc/nginx/sites-enabled/
    sudo nginx -t  # 校验配置语法
    sudo systemctl restart nginx
    
  4. 调整EC2安全组,开放80端口的公网入站流量(或限制指定IP段)

方案二:使用AWS应用负载均衡(ALB)

  1. 进入AWS EC2控制台,创建应用负载均衡,选择「互联网-facing」类型,监听端口设置为80
  2. 创建目标组,将你的EC2实例加入,目标端口填8080
  3. 在负载均衡的监听规则中,添加路径匹配/ContextName/api,转发至创建好的目标组
  4. 回到Route 53,将api.myapp.io的CNAME记录指向负载均衡的域名(而非EC2实例域名)
  5. 调整安全组:EC2安全组允许来自负载均衡安全组的8080端口流量;负载均衡安全组允许80端口的公网入站流量

3. 可选:简化Spring Boot访问路径

若希望直接通过http://api.myapp.io/api访问(去掉ContextName),修改Spring Boot配置文件:

  • 打开application.properties,添加:
    server.servlet.context-path=/ContextName
    
    若要彻底移除上下文路径,设置为server.servlet.context-path=/
  • 重启Spring Boot应用生效

内容的提问来源于stack exchange,提问作者Praful Jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:37:12