PAYATHON 2026

新手免费部署 Spring Boot,该选 AWS Elastic Beanstalk 还是 Render?

数据小许

结论

如果想以零预算学习部署,让 Vercel 上的 Angular 前端调用 Spring Boot API,可以先尝试 Render 的 Free Web Service,但要接受服务休眠和资源限制。Render 提供托管 TLS,可以直接使用 HTTPS 后端地址。Render Web Services 文档

如果想学习 AWS 的部署、证书和网络配置,可以选择 Elastic Beanstalk,但需要单独评估费用。Elastic Beanstalk 支持 HTTPS;目前拿到 HTTP 地址,不代表平台只能使用 HTTP。AWS HTTPS 配置文档

为什么前后端协议不一致会出问题?

当 Angular 页面通过 HTTPS 加载,却通过 HttpClient 请求公网 HTTP API 时,浏览器会将该请求视为 Mixed Content 并阻止。前端需要调用可正常访问的 HTTPS API 地址。MDN Mixed Content 说明

仅凭问题描述,还不能确定实际报错是否由 Mixed Content 导致,可以在浏览器开发者工具的 Console 和 Network 中检查。

CORS 是另一个问题:HTTPS 解决传输协议问题,CORS 决定浏览器是否允许跨源读取响应。即使后端放开 CORS,也无法解决 HTTPS 页面调用 HTTP API 的混合内容问题。

如何用 Render 完成学习部署?

1. 准备 Docker 部署

Render 官方建议 Java 等 JVM 应用使用 Docker。可以在仓库中提供用于构建和运行应用的 Dockerfile,然后创建 Web Service,选择 Docker 和 Free 实例。镜像中的 Java 版本需要与项目兼容。Render Docker 部署文档

如果项目还没有 Dockerfile,需要根据实际使用的 Maven 或 Gradle、Java 版本和 JAR 产物配置构建流程。原问题没有提供这些信息,因此不能直接套用固定版本的构建命令。

2. 配置监听端口

在 Spring Boot 的 application.properties 中加入:

server.address=0.0.0.0
server.port=${PORT:8080}

应用会读取平台提供的 PORT;本地未设置该变量时,使用 8080。Render 要求公开 HTTP 服务监听 0.0.0.0,并建议使用 PORT 指定的端口。Render 端口配置、Spring Boot 端口配置

Render 在入口终止 TLS,再通过 HTTP 转发给容器,因此通常不需要在 Spring Boot 内部额外配置 HTTPS 证书。Render 请求转发说明

3. 修改 Angular 的 API 地址

部署成功后,先直接访问后端已有接口,确认 HTTPS 地址可用,再修改前端实际使用的 API 配置。例如:

export const environment = {
  production: true,
  apiUrl: 'https://your-service.onrender.com'
};

示例中的域名是占位符,需要替换为自己的服务地址。确认业务代码读取了该配置后,重新部署 Angular。

4. 检查跨域访问

如果后端接口可以直接访问,但 Angular 请求出现 CORS 错误,需要在后端允许实际的 Vercel 前端来源,例如 https://your-project.vercel.app。来源应包含协议和域名,不包含页面路径。

具体配置取决于项目使用 Spring MVC、WebFlux 还是 Spring Security。如果启用了 Spring Security,还要确认预检请求没有被安全规则拦截。

免费方案有哪些限制?

Render 的 Free Web Service 连续 15 分钟没有入站流量后会休眠,下次访问需要等待唤醒。免费服务还受实例小时数、流量和构建额度限制,本地文件也不会持久保存。它适合学习和演示,不适合用于对持续可用性有要求的场景。Render 免费服务限制

使用零预算方案时,应确认选择了 Free 实例,并检查工作区费用设置。按当前规则,没有添加付款方式时,部分额度耗尽会导致服务暂停或停止新构建;添加付款方式后,部分超额使用可能产生费用。如果需要数据库,也要另查其免费期限,不能默认它与 Web Service 一样长期免费。Render 免费额度说明

如果继续使用 Elastic Beanstalk,怎么处理 HTTPS?

常见做法有两种:

  • 对负载均衡环境配置 HTTPS listener 和证书。
  • 对单实例环境,在实例上的代理服务器配置 HTTPS,并维护证书。

AWS 官方支持这两种方式,具体操作取决于当前环境类型。Elastic Beanstalk HTTPS 配置

Elastic Beanstalk 本身没有额外服务费,但 EC2、存储和负载均衡等底层资源可能收费。免费额度或抵扣资格应以自己的账户为准,不能把它当作永久免费的部署方案。Elastic Beanstalk 定价说明

备注:内容仅供参考。