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

Microk8s Nginx Ingress配置host后不匹配后端访问返回404

问题根因

你的Ingress返回404的核心原因是spec.rules字段的YAML结构写错了:
你当前配置中rules下定义了两个独立的列表项:

  1. 第一项仅配置了host: "my-host.com",没有绑定任何HTTP路由和后端服务配置
  2. 第二项仅配置了HTTP路径规则,没有绑定host,属于匹配所有未命中其他Host规则的兜底规则
    当你访问https://my-host.com时,请求会命中第一个没有后端配置的空规则,Nginx Ingress直接返回404。
修复后的正确配置

把http配置和host配置放到同一个rule列表项下,删除http前多余的列表短横线,调整缩进即可:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: public
  name: http-ingress
spec:
  tls:
    - hosts:
        - "my-host.com"
      secretName: nginx-ingress
  rules:
    - host: "my-host.com"
      http:
        paths:
          - pathType: Prefix
            path: /
            backend:
              service:
                name: some-service
                port:
                  number: 80
额外排查项

如果修改配置后仍有异常,可以逐一核对以下配置:

  • 确认后端服务some-service运行正常,在集群内可通过80端口正常响应:可执行kubectl port-forward service/some-service 8080:80,本地访问http://localhost:8080验证服务可用性
  • 注解nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"表示后端服务使用HTTPS协议通信,请确认Service暴露的80端口确实是HTTPS协议端口,否则会出现后端协议不匹配错误
  • 确认TLS证书Secretnginx-ingress和Ingress资源在同一个命名空间,证书格式符合K8s TLS Secret规范
  • 执行microk8s status确认Nginx Ingress插件处于已启用状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:42:21