640 字
3 分钟
从域名到应用:Route 53、CloudFront、Nginx 与 Next.js 的部署链路

一个面向公网的 Web 应用通常由“域名注册、DNS 解析、CDN 入口、源站代理与应用进程”几层构成。把职责拆开,排查访问、缓存或证书问题时就能快速定位到正确的一层。

浏览器
→ DNS(Route 53)
→ CDN(CloudFront)
→ 源站域名(origin.example.com)
→ Nginx
→ Next.js 应用

各组件的职责#

组件负责什么不负责什么
域名注册商域名归属与续费不必然提供 DNS 解析
Route 53DNS 托管与记录解析不提供应用服务
CloudFrontHTTPS 入口、边缘缓存、回源转发不替代源站业务逻辑
Nginx反向代理、请求限制、响应头不生成 Next.js 页面
Next.js页面渲染、API 和业务逻辑不管理 DNS 或 CDN 证书

DNS 与入口配置#

常见的记录关系是:

example.com A/AAAA Alias → CloudFront 分发
www.example.com A/AAAA Alias → CloudFront 分发
origin.example.com A/AAAA → 源站公网地址或负载均衡器

主域名和 www 交给 CloudFront,源站使用专门的子域名。这样迁移服务器时只需更新源站记录,不必改动 CDN 分发配置。

证书位置

为 CloudFront 自定义域名签发的 ACM 证书必须位于 us-east-1 区域。源站若使用 HTTPS,还需要一张与 origin.example.com 匹配且由 CloudFront 信任的证书。

缓存策略要与请求类型匹配#

路径类型推荐策略
带哈希的 JS/CSS/图片长缓存,文件名变化即更新
页面 HTML依据是否 SSR、ISR 或静态导出设置短缓存/不缓存
/api/*通常不缓存,转发必要请求头和查询参数
/ws/*不缓存,并确认 CDN 与源站均允许 WebSocket 升级
/_next/image*结合 Next.js 图片优化和缓存策略配置

不要把“动态接口一律缓存”或“静态资源一律不缓存”作为默认策略;缓存键、TTL、Cookie 与查询参数都要随业务调整。

源站反向代理示意#

server {
listen 443 ssl http2;
server_name origin.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

生产环境还应限制源站仅接受 CloudFront 或受信网络的访问、启用访问日志和健康检查,并避免把管理后台直接暴露在未保护的子域名上。

排查顺序#

遇到访问故障时,按“DNS 记录 → CloudFront 分发与证书 → 源站可达性 → Nginx 日志 → 应用日志”逐层验证。每层只确认一个事实,可以避免在错误的组件上反复修改配置。

从域名到应用:Route 53、CloudFront、Nginx 与 Next.js 的部署链路
https://blog.xqcherry.top/posts/operations/cloudfront-route53-nginx-architecture/
作者
xqcherry
发布于
2026-07-21
许可协议
CC BY-NC-SA 4.0