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

AKS中Nginx Ingress返回HTTP跳转地址导致OIDC redirect_uri报错如何解决

问题根因

你的Ingress层已经配置了TLS终结,用户到Ingress的流量走HTTPS,但Ingress转发到后端Pod的流量是HTTP协议,应用无法感知外层的HTTPS协议,所以生成OIDC重定向地址时默认使用了HTTP协议,导致和身份提供商配置的HTTPS回调地址不匹配。

排查步骤

  • 先验证Ingress TLS配置是否生效:直接访问https://test-api.dev.net,确认证书有效,不会自动跳转到HTTP地址
  • 执行kubectl get ingress <你的ingress资源名> -o yaml,确认spec.tls字段已正确渲染,host和secretName配置符合预期
  • 执行kubectl describe secret <你的tls secret名>,确认secret类型为kubernetes.io/tls,且包含有效tls.crt和tls.key字段

解决方案

第一步:修改Ingress注解配置

在你的ingress.yml的annotations段新增3个配置,强制HTTPS跳转并传递原始请求协议头给后端应用:

annotations:
  kubernetes.io/ingress.class: nginx
  # 新增配置1:强制所有HTTP请求自动跳转HTTPS
  nginx.ingress.kubernetes.io/ssl-redirect: "true"
  # 新增配置2:开启转发头传递,将原始请求信息传递给后端
  nginx.ingress.kubernetes.io/use-forwarded-headers: "true"
  # 新增配置3:明确传递原始请求协议头
  nginx.ingress.kubernetes.io/proxy-set-header: X-Forwarded-Proto $scheme
  nginx.ingress.kubernetes.io/configuration-snippet: |
    more_clear_headers Server;

更新Ingress配置后重新发布即可。

第二步(可选,针对ASP.NET Core应用):配置应用信任转发头

如果你的应用是ASP.NET Core(signin-oidc是该栈的默认OIDC回调路径),需要额外配置应用读取转发头,否则应用不会识别X-Forwarded-Proto的内容:
在应用启动配置的最开头添加转发头中间件:

// 注册转发头配置
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    // 生产环境建议配置为Ingress的具体IP段,测试环境可直接清空放行
    options.KnownProxies.Clear();
    options.KnownNetworks.Clear();
});

// 务必放在所有中间件的最前面,优先读取转发头
app.UseForwardedHeaders();

// 后续再添加认证、授权等其他中间件
app.UseAuthentication();
app.UseAuthorization();

其他语言的应用同理,配置框架读取X-Forwarded-Proto请求头判断原始请求协议即可。

临时应急方案

如果不方便修改应用代码,可以在Ingress的configuration-snippet中强行重写重定向响应头:

nginx.ingress.kubernetes.io/configuration-snippet: |
  more_clear_headers Server;
  # 强制将所有HTTP开头的重定向地址改为HTTPS
  if ($http_location ~* ^http://(.*)$) {
    set $location_https https://$1;
    add_header Location $location_https always;
  }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:04