Next.js动态路由部署AWS后失效报502错误求助
解决Next.js动态路由502错误的排查方案
1. 检查CloudFront缓存行为配置
- 针对动态路由(如
/pagename/*),确保缓存行为设置正确:- 将
Viewer Protocol Policy设为Redirect HTTP to HTTPS(若使用HTTPS) Allowed HTTP Methods需包含GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE,避免请求方法被拦截- 动态路由需禁用缓存,可选择
Managed-CachingDisabled缓存策略,或配置缓存键包含完整路径与查询参数 - 确认
Origin Request Policy会将完整请求路径(含动态参数)转发至ELB,不做截断或修改
- 将
2. 验证ELB目标组配置
- 若使用Application Load Balancer,检查监听器规则:
- 确保所有请求(含带动态参数的路径)都转发至EC2上Next.js服务的端口(默认3000)
- 不要在ELB层面设置路径重写,避免丢失动态路由参数
- 健康检查路径需用Next.js可正常响应的地址(如
/),确保EC2实例被标记为健康状态,否则ELB不会转发请求
3. 确认EC2上的Next.js服务配置
- 检查
next.config.js中的basePath设置,避免与动态路由路径冲突 - 验证EC2安全组规则,允许ELB访问Next.js服务端口(如3000)
- 查看Next.js服务日志(如
pm2 logs或终端输出),确认是否真的未收到动态路由请求:无日志则问题在CloudFront/ELB,有日志则针对性排查服务端错误
4. 测试链路各节点
- 直接访问ELB域名测试动态路由:若正常,问题出在CloudFront;若异常,排查ELB或EC2
- 直接访问EC2公网IP+端口测试动态路由:若正常,问题出在ELB;若异常,检查EC2上的Next.js服务
内容的提问来源于stack exchange,提问作者Terry Windwalker
相关产品推荐
相关产品推荐

