我有一个K8s集群,有两个服务--一个服务服务前端静态文件,另一个服务后端服务。为了区分这两者,我使用一个入口和一个对xyz.com/的rest调用指向前端服务,而对xyz.com/ rest /abc的rest调用指向后端服务(它是一个api网关和它后面的服务集合)。在创建入口时,如果使用重写目标注释将xyz.com/rest/abc重写为xyz/com/abc,则在尝试访问前端服务时会出现错误。我所面对的错误是
Did not parse stylesheet .... because non css mime types are not allowed in strict mode
Syntax error: Unexpected token < (while parsing bundle.js)但是,如果我没有使用重写注释,那么所有文件都会被传输,而不会出现任何问题,并且页面将按其应有的方式呈现。
正在使用的注释:
nginx.ingress.kubernetes.io/rewrite-target: /$2使用nginx ingress controller
不知道为什么会发生这种情况,有人能帮上忙吗?任何指示,或者我正在犯的任何错误。
我没有将path:"/"用于前端服务,而是尝试给出一个更精确的路径"/ui",但它仍然给出了相同的问题。
K8s和ingress都是新手,所以被困在这里,不知道该怎么办。
入口->
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-ingress
labels:
name: sample-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: xyz.com
http:
paths:
- pathType: Prefix
path: /rest(/|$)(.*)
backend:
service:
name: backend-service
port:
number: 8080
- pathType: Prefix
path: /()
backend:
service:
name: frontend-service
port:
number: 3000发布于 2022-11-29 21:08:41
对我来说,还不清楚想要的行为是什么。如果你想
/rest/restpath -> backend-service/restpath和
/uipath -> frontend-service/uipath那么你的入口看起来就像这样:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-ingress
labels:
name: sample-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: xyz.com
http:
paths:
- pathType: Prefix
path: /rest/(.*)
backend:
service:
name: backend-service
port:
number: 8080
- pathType: Prefix
path: /(.*)
backend:
service:
name: frontend-service
port:
number: 3000https://stackoverflow.com/questions/74619621
复制相似问题