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

AKS中Ingress配置问题:无法访问ASP.NET Core API指定路由

问题排查与修复建议

针对你遇到的Ingress无法访问/api/opportunities/路由的问题,从提供的K8s配置来看,主要有以下几个可能的问题及修复方案:

1. Ingress重写规则与API路由不匹配

你的Ingress配置中,重写规则将/api(/|$)(.*)重写到/$2,这会把外部请求的/api/opportunities/转换为向内部服务请求/opportunities/。但如果你的ASP.NET Core API控制器路由本身带有/api前缀(比如[Route("api/[controller]")]),内部服务就不存在/opportunities/这个路由,自然会返回404。

修复方案:
调整重写目标,保留api前缀:

nginx.ingress.kubernetes.io/rewrite-target: /api/$2

如果你的API路由是从根路径开始的(比如[Route("[controller]")]),当前重写规则没问题,但需要确认API的实际路由配置。

2. PathType与正则规则冲突

当启用nginx.ingress.kubernetes.io/use-regex: "true"时,pathType: Prefix可能导致Nginx Ingress的路径匹配逻辑异常——Prefix类型是基于前缀匹配,而正则是模式匹配,两者混用可能不符合预期。

修复方案:
将pathType改为ImplementationSpecific:

pathType: ImplementationSpecific

3. 验证集群内部服务可用性

先排除服务本身的问题,在集群内部测试API是否可访问:

# 临时启动curl容器测试内部服务
kubectl run -it --rm --image=curlimages/curl curl-test -- curl opportunities-api/api/opportunities/

如果该请求也失败,说明问题出在Deployment或Service配置上,比如容器未正常启动、端口映射错误,或者API本身存在运行异常。

4. 确认Ingress Controller状态

检查Ingress是否获取到外部IP:

kubectl get ingress opportunities-api

如果ADDRESS字段为空,说明Ingress Controller未正确部署或未分配外部IP,需确认AKS上的Nginx Ingress Controller是否按步骤部署完成。

修复后的完整Ingress配置示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: opportunities-api
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /api/$2
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /api(/|$)(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: opportunities-api
            port:
              number: 80

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:15:38