为什么路径 /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 服务
当我尝试在入口服务中使用不同于 / 的路径和重写注释时,我在浏览器中收到“错误超时”。我需要能够使用 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 服务