为什么路径 /dev(/|$)(.*) 和重写注释不足以在 Nginx 入口中进行重定向?

Why a path /dev(/|$)(.*) and a rewrite annotation aren't enough for a redirect in the Nginx ingress?

当我尝试在入口服务中使用不同于 / 的路径和重写注释时,我在浏览器中收到“错误超时”。我需要能够使用 example.com/dev 之类的东西访问我的前端,并且前端的 pod 需要接收对 / 的请求。 我使用 Azure K8s 1.22.6 和 Nginx ingress 4.1.0。 这是我的资源:

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

和入口。此配置有效,我留下了我需要评论的行:

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: /
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      #- path: /dev(/|$)(.*)
      - path: /
        pathType: Prefix
        backend:
          service:
            name: frontend-service
            port: 
              number: 80

如果我使用重写注释 $2 和路径“/dev(/|$)(.*)”,那么我得到“ERR_CONNECTION_TIMED_OUT”。我缺少什么?

问题出在前端 vue 应用程序中 - 我已添加

publicPath: '/dev/',

进入vue.config.js

ps 我跳过了 echo 服务