多个nginx入口重写上的默认路径



这是我的情况,我在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

这取决于前端和后端应用程序在路径方面的预期。通常情况下,前端需要能够在某个外部路径上找到后端,在您的情况下,听起来您的后端需要在与集群内工作的路径(/(不同的外部路径上可用(/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

相关内容

  • 没有找到相关文章

最新更新