这是我的情况,我在kubernetes(ingress),有两个docker图像:一个专用于Web,第二个专用于api.
在下一个配置下(在消息的末尾):/ web将显示将对/ api进行一些调用的前端,一切都很好.
但/是一个404,因为没有定义,我找不到一种方法告诉入口配置/应该重定向到/ web
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress
annotations:
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- demo.com
secretName: tls-secret
rules:
- host: demo.com
http:
paths:
- path: /api
backend:
serviceName: api-app
servicePort: 8080
- path: /web
backend:
serviceName: web-app
servicePort: 80
最佳答案 这取决于您的前端和后端应用程序在路径方面的期望.通常情况下,前端将为
need to be able to find the backend on a certain external path,在您的情况下,您的后端需要在外部(/ api)与集群(/)内部工作的不同路径上提供.您可以重写对api的请求的目标,以便/ api将转到/当请求被路由到后端时:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress-backend
annotations:
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- demo.com
secretName: tls-secret
rules:
- host: demo.com
http:
paths:
- path: /api
backend:
serviceName: api-app
servicePort: 8080
您还可以为不重写目标的前端定义单独的入口(具有不同的名称),以便对/ web的请求将转至/ web:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress-frontend
annotations:
kubernetes.io/tls-acme: "true"
spec:
tls:
- hosts:
- demo.com
secretName: tls-secret
rules:
- host: demo.com
http:
paths:
- path: /web
backend:
serviceName: web-app
servicePort: 80