多个nginx入口重写的默认路径 [英] Default path on multiple nginx ingress rewrite
本文介绍了多个nginx入口重写的默认路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的情况,我在Kubernetes(入口)上,有两个docker图像:一个专门用于Web,另一个用于API。
在下一个配置下(在消息末尾):/web
将显示将调用/api
的前端,All Good There。
但/
是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
这篇关于多个nginx入口重写的默认路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文