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

如何为Okteto Pod传递额外HTTP头,解决HTTPS协议识别问题

解决Duende IdentityServer在Okteto Cloud中内部Pod识别HTTPS协议的问题

要让内部Pod正确识别外部的HTTPS协议,需要从Ingress配置和ASP.NET Core应用配置两个层面入手:

一、修改Ingress配置,传递转发头

Okteto使用NGINX Ingress控制器,你需要在Ingress的annotations中添加配置,让控制器将原始请求的协议、主机和客户端IP通过指定的HTTP头传递给后端Pod。修改后的Ingress配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: id6
  annotations:
    dev.okteto.com/generate-host: id6
    # 启用转发头支持
    nginx.ingress.kubernetes.io/use-forwarded-headers: "true"
    # 强制HTTP请求重定向到HTTPS
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    # 传递原始协议到X-Forwarded-Proto头
    nginx.ingress.kubernetes.io/proxy-set-header: "X-Forwarded-Proto $scheme"
    # 传递原始Host头
    nginx.ingress.kubernetes.io/proxy-set-header: "X-Forwarded-Host $host"
    # 传递客户端IP到X-Forwarded-For头
    nginx.ingress.kubernetes.io/proxy-set-header: "X-Forwarded-For $remote_addr"
spec:
  rules:
    - http:
        paths:
          - backend:
              service:
                name: id6
                port:
                  number: 80
            path: /
            pathType: ImplementationSpecific

这些注解的作用:

  • use-forwarded-headers: "true":告诉NGINX启用转发头处理逻辑
  • proxy-set-header系列配置:明确将原始请求的关键信息注入到对应HTTP头,传递给后端Pod
  • ssl-redirect: "true":确保外部用户只能通过HTTPS访问服务

二、配置ASP.NET Core应用信任转发头

即使Ingress传递了头,ASP.NET Core默认不会信任这些来自代理的头,需要在应用中开启转发头支持并信任Okteto的代理网络:

在你的Program.cs中添加以下配置:

using System.Net;
using Microsoft.AspNetCore.HttpOverrides;

// 配置转发头选项
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    // 开启对X-Forwarded-For和X-Forwarded-Proto的支持
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    // 信任K8s集群内网IP范围(Okteto的代理节点处于这些网段内)
    options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("10.0.0.0"), 8));
    options.KnownNetworks.Add(new IPNetwork(IPAddress.Parse("192.168.0.0"), 16));
});

var app = builder.Build();

// 必须在其他中间件之前添加这个中间件
app.UseForwardedHeaders();

// 后续的中间件配置(如UseAuthentication、UseAuthorization等)
// ...

三、验证效果

重新部署修改后的Ingress和应用,访问你的IdentityServer发现端点,检查返回的JSON中所有端点地址是否已变为https://开头,此时重定向逻辑将使用正确的HTTPS地址,解决之前的协议不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:40:51