Angular on Kubernetes (ingress routing) Angular on Kubernetes (ingress routing) kubernetes kubernetes

Angular on Kubernetes (ingress routing)


Without knowing the version of nginx-ingress this is just a guess.

Per the documentation at https://kubernetes.github.io/ingress-nginx/examples/rewrite/#rewrite-target is says:

Starting in Version 0.22.0, ingress definitions using the annotation nginx.ingress.kubernetes.io/rewrite-target are not backwards compatible with previous versions. In Version 0.22.0 and beyond, any substrings within the request URI that need to be passed to the rewritten path must explicitly be defined in a capture group.

This means that you need to explicitly pass the paths like:

apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: myingress  annotations:    nginx.ingress.kubernetes.io/rewrite-target: /$2    nginx.ingress.kubernetes.io/use-regex: "true"spec:  rules:  - http:      paths:      - path: /        backend:          serviceName: angular-service          servicePort: 80      - path: /test/(/|$)(.*)        backend:          serviceName: angular-service          servicePort: 80


I only got it working by creating TWO complete different Ingress:NOTHING else was working.

  • my backend is /api
  • frontend is /
apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: frontend-ingress  annotations:    kubernetes.io/ingress.class: nginxspec:  rules:  - http:      paths:      - path: /        backend:          serviceName: frontend-service          servicePort: 5000
apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: backend-ingress  annotations:    nginx.ingress.kubernetes.io/rewrite-target: /$2    nginx.ingress.kubernetes.io/use-regex: "true"spec:  rules:  - http:      paths:      - path: /test/(/|$)(.*)        backend:          serviceName: backend-service          servicePort: 5000