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