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

CloudFront重定向异常:访问自定义域名被跳转至Istio NLB地址

问题描述

我已搭建EKS环境并部署Istio以暴露应用,创建指向Istio NLB的CloudFront分发后,访问abc123.cloudfront.net会被重定向至NLB地址abc-123.elb.us-east-2.amazonaws.com,无法保留原域名。配置自定义域名example.com作为别名后,仍存在该重定向问题。执行curl命令持续收到301状态码:

curl --head --location https://example.com
HTTP/2 301
content-length: 0
location: https://abc-123.elb.us-east-2.amazonaws.com/
date: Sun, 28 Jan 2024 21:52:30 GMT
server: istio-envoy
x-cache: RefreshHit from cloudfront
via: 1.1 93fdc54a207de431301d71c9b3644446.cloudfront.net (CloudFront)
x-amz-cf-pop: GRU3-P5
x-amz-cf-id: O4Jr0UNuqtEN_DzuVSl9EIh3f0WZZK4hI7mVnwYySM0Zn3esBLCOlg==
age: 3612

已尝试操作:

  • 搭建EKS环境,部署Istio(Gateway/VirtualService)暴露应用
  • 创建指向Istio NLB的CloudFront分发
  • 配置自定义域名example.com作为别名

预期效果:

  • 访问abc123.cloudfront.net时保留原域名,而非重定向至NLB地址
  • 自定义域名example.com可正常访问无重定向

实际问题:curl请求持续返回301状态码,存在重定向问题。请问导致该301重定向、无法保留自定义域名的原因是什么?

可能的原因及排查方案

1. Istio 配置未覆盖目标域名

从响应头的server: istio-envoy可以确定,301重定向由Istio的Envoy代理返回,而非CloudFront。核心原因是Istio未正确识别请求的Host头:

  • 检查Gateway的tls.hosts字段,是否包含abc123.cloudfront.net和example.com,如果只配置了NLB域名,Envoy会将其他Host的请求重定向到NLB地址
  • 检查VirtualService的hosts列表,是否覆盖了所有需要访问的域名,若VirtualService仅匹配NLB域名,会触发路由重定向逻辑
  • 排查Istio是否存在强制重定向到固定域名的HTTP路由规则

2. CloudFront 未保留原始Host头

CloudFront默认会将请求的Host头替换为源站(NLB)的域名,导致Istio收到的Host是NLB地址,进而触发重定向:

  • 进入CloudFront分发的源设置,确认是否开启了自定义HTTP头,将Host头设置为Viewer Host Header(保留用户请求的原始Host)。若未配置,CloudFront会传递NLB域名作为Host,Istio无法匹配预期域名,返回301

3. NLB 与 Istio Gateway 协议/端口不匹配

  • 若NLB配置HTTPS端口,但Istio Gateway监听HTTP端口,Envoy可能错误地将请求重定向到NLB的HTTPS地址
  • 检查NLB的监听协议是否与Istio Gateway的协议一致,排查TLS终止配置冲突(比如NLB终止TLS后转发HTTP到Istio,而Istio Gateway期望HTTPS请求,触发重定向)

4. 后端应用硬编码重定向地址

虽然响应头显示由istio-envoy返回301,但仍需排查后端应用是否存在硬编码NLB域名作为跳转目标的逻辑,导致Istio转发重定向响应时保留了该地址


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:07:45