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 配置时的警告消息不会伤害任何人
成功设置 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 配置时的警告消息不会伤害任何人