kubernetes nginx-ingress 总是重定向到 404 默认后端忽略路径规则

kubernetes nginx-ingress always redirecting to 404 default backen ignoring path rules

成功设置 TLS 后,我无法通过入口访问我的 Web 应用程序,因为它总是重定向到 404 默认后端

这是我的入口配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: 'letsencrypt-prod'
    nginx.ingress.kubernetes.io/ssl-redirect: 'true'
spec:
  tls:
    - hosts:
        - xxxx.com
        - www.xxxx.com
      secretName: xxxx-com
  rules:
    - host: xxxx.com
    - http:
        paths:
          - path: /(.*)
            backend:
              serviceName: web-cluster-ip-service
              servicePort: 3000
    - host: www.xxxx.com
    - http:
        paths:
          - path: /(.*)
            backend:
              serviceName: web-cluster-ip-service
              servicePort: 3000

删除 TLS 选项使其正常工作(认为不再使用 TLS):

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
spec:
  rules:
    - http:
        paths:
          - path: /(.*)
            backend:
              serviceName: web-cluster-ip-service
              servicePort: 3000

没关系,几个小时后我发现我的配置有错误:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: 'letsencrypt-prod'
    nginx.ingress.kubernetes.io/ssl-redirect: 'true'
spec:
  tls:
    - hosts:
        - xxxx.com
        - www.xxxx.com
      secretName: xxxx-com
  rules:
    - host: xxxx.com
      http:
        paths:
          - path: /(.*)
            backend:
              serviceName: web-cluster-ip-service
              servicePort: 3000
    - host: www.xxxx.com
      http:
        paths:
          - path: /(.*)
            backend:
              serviceName: web-cluster-ip-service
              servicePort: 3000

应在每个主机块中的 http 之前删除超标

那是......很难找到,应用可能的 weird/wrong 配置时的警告消息不会伤害任何人