Home > database >  Why a path /dev(/|$)(.*) and a rewrite annotation aren't enough for a redirect in the Nginx ing
Why a path /dev(/|$)(.*) and a rewrite annotation aren't enough for a redirect in the Nginx ing

Time:05-04

When I try to use a path different from / and a rewrite annotation in an ingress service I get an "error timeout" in browser. I need to be able to access my front with something like example.com/dev and the frontend's pod needs to receive requests to /. I use Azure K8s 1.22.6 and Nginx ingress 4.1.0. Here's my resources:

apiVersion: v1
kind: Service
metadata:
  name: frontend-service
spec:
  selector:
    app: frontend
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
        - name: frontend
          image: ealen/echo-server
          ports:
            - containerPort: 80
          imagePullPolicy: Always

And ingress. This configuration works and I left lines which I'm needed commented:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-fa
 # annotations:
    # nginx.ingress.kubernetes.io/use-regex: "true"
    #nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      #- path: /dev(/|$)(.*)
      - path: /
        pathType: Prefix
        backend:
          service:
            name: frontend-service
            port: 
              number: 80

If I use the rewrite annotation $2 and the path "/dev(/|$)(.*)" then I get "ERR_CONNECTION_TIMED_OUT". What I'm missing?

CodePudding user response:

the problem was in the frontend vue application - I've added

publicPath: '/dev/',

into the vue.config.js

ps I've skipped the echo service

  • Related