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

如何在AWS部署Docker化Ktor后端与Svelte SPA并关联自定义域名

将Docker化Ktor后端与Svelte SPA部署到AWS并关联自定义域名

前置准备

  • 已托管在AWS Route53的自定义域名(若域名在其他服务商,可转入Route53简化解析配置)
  • 在AWS证书管理器(ACM)中申请该域名的SSL证书(需覆盖主域名,如example.com,证书需部署在us-east-1区域以支持CloudFront)

一、后端部署(Elastic Beanstalk + Docker + RDS)

  1. 打包并推送Ktor镜像到ECR
    • 构建Ktor后端的Docker镜像:docker build -t ktor-backend .
    • 创建AWS ECR仓库,按照控制台提供的指令将镜像推送到仓库
  2. 创建Elastic Beanstalk环境
    • 选择「Docker」平台,配置环境为「Web server environment」
    • 在「应用版本」中选择「从ECR拉取镜像」,填入ECR镜像地址
    • 添加环境变量(如DB_URL、数据库用户名密码等)供Ktor读取
  3. 关联RDS数据库
    • 在Beanstalk环境的「配置」>「数据库」中添加RDS实例,或单独创建RDS后通过安全组开放Beanstalk环境的访问权限
    • 测试后端:访问Beanstalk生成的默认域名(如xxx.elasticbeanstalk.com)的/api接口,确认正常响应

二、前端部署(S3 + CloudFront)

  1. 配置S3桶
    • 创建与域名同名的S3桶(如example.com),禁用静态网站托管,设置桶为私有
    • 上传Svelte打包产物:执行npm run build后,将build目录下的所有文件上传到S3桶
  2. 配置CloudFront分发
    • 源选择刚创建的S3桶,启用「Origin Access Control(OAC)」确保仅CloudFront能访问S3
    • 设置默认根对象为index.html,添加自定义错误页面:将404、403状态码指向/index.html(解决SPA路由刷新404问题)
    • 测试前端:访问CloudFront生成的默认域名,确认页面加载及前端路由正常

三、自定义域名关联与路由分流(核心:替代本地Nginx反向代理)

方案1:CloudFront多源路径匹配(推荐,无额外组件)

这是最简洁的方式,直接在CloudFront中实现/api路由转发到后端,其余路由指向前端:

  1. 添加后端源到CloudFront
    • 编辑CloudFront分发,添加新源:源类型选「自定义源」,域名填入Beanstalk的默认域名
    • 源协议策略设置为「HTTPS only」
  2. 配置/api路由行为
    • 添加新行为:路径模式设为/api/*,源选择刚添加的Beanstalk源
    • 缓存策略选择「CachingDisabled」(API请求无需缓存),确保转发所有必要请求头(如Authorization)
  3. 绑定自定义域名与SSL
    • 在CloudFront分发的「设置」>「备用域名」中添加自定义域名(如example.com)
    • 选择ACM中提前申请的SSL证书
  4. Route53解析配置
    • 在Route53中创建A类型的别名记录,将自定义域名指向CloudFront分发的域名

方案2:API Gateway中转(适合需API管理场景)

若需要对后端API做限流、认证等管理,可将Beanstalk后端接入API Gateway,再将CloudFront的/api行为指向API Gateway,步骤略复杂,按需选择。


四、本地Nginx逻辑的对应映射

本地Nginx配置AWS云环境实现方式
location /api { proxy_pass http://ktor-backend; }CloudFront的/api/*行为转发到Beanstalk源
location / { try_files $uri $uri/ /index.html; }CloudFront默认行为指向S3 + 自定义错误页面配置

额外优化建议

  • 给Beanstalk环境配置自动缩放规则,根据CPU/内存使用率自动扩容缩容
  • 开启S3桶版本控制,便于前端版本回滚
  • 给前端静态资源(JS/CSS/图片)添加哈希后缀,配合CloudFront长缓存策略优化加载速度
  • 配置Beanstalk安全组,仅允许CloudFront的IP段访问,禁止公网直接访问后端

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:42:51