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

AWS EKS中Nginx Ingress后ASP.NET Core服务返回502 Bad Gateway求助

排查思路
  • 最优先排查:ASP.NET容器监听端口不匹配
    微软官方mcr.microsoft.com/dotnet/samples:aspnetapp镜像默认监听8080端口(为了兼容非root运行模式,没有使用80端口),你当前Deployment配置的containerPort为3001,Service的targetPort也指向3001,和容器实际监听端口不一致是502错误的最常见诱因。
    验证操作:执行kubectl exec -it <moba-web-portal对应Pod名称> -- ss -tlnp查看容器内部实际监听的端口。如果确实为8080,两种解决方式:
    1. 将Deployment的containerPort、Service的targetPort都改为8080,Ingress后端端口同步改为8080
    2. 给ASP.NET容器添加环境变量ASPNETCORE_URLS=http://+:3001强制监听3001端口
  • 第二步:验证Service层连通性(排除Ingress影响)
    直接在集群内部测试Service是否可访问,执行:
    kubectl run -it --rm --image=busybox:1.28 test -- wget -O- http://moba-web-portal.default.svc.cluster.local:3001
    
    如果无法正常返回响应,说明问题出在Deployment/Service层,和Ingress配置无关:
    1. 执行kubectl get pods -l app=moba-web-portal确认Pod处于Running状态,无重启报错
    2. 执行kubectl get endpoints moba-web-portal确认Endpoint存在对应Pod的IP+端口记录,无空值
  • 第三步:校验Ingress规则匹配逻辑
    你当前Ingress配置的路径前缀为/moba,但你提到访问的是/moba-web-portal路径,路径不匹配会直接找不到后端服务。要么将Ingress的path改为/moba-web-portal,要么访问/moba路径测试。
    另外你配置了nginx.ingress.kubernetes.io/rewrite-target: /注解,所有匹配前缀的请求都会被重写为根路径传给后端,需要确认ASP.NET应用是否支持根路径访问,若应用需要保留路径前缀请删除该注解。
  • 第四步:查看Ingress Controller日志定位具体错误
    执行命令查看Nginx Ingress Controller的访问日志:
    kubectl logs -n <Ingress Controller所在命名空间> <Ingress Controller Pod名称>
    
    搜索对应502请求的日志条目:如果报错为connection refused,说明还是后端端口/服务未正常监听;如果报错为connection timed out,检查EKS工作节点安全组是否放开3001端口入站规则、集群是否配置NetworkPolicy禁止Ingress Controller访问该服务端口。
  • 第五步:验证后端协议配置
    可以在Ingress注解中添加nginx.ingress.kubernetes.io/backend-protocol: "HTTP",明确指定后端使用HTTP协议访问,避免ASP.NET默认的HTTPS跳转逻辑导致的访问异常。

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

相关产品推荐
方舟 Agent Plan

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

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