kubernetes - Nginx 入口路由问题
问题描述
我对 url 路径有疑问。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: backend
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /v1/$1
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
tls:
- hosts:
- backend.example.com
secretName: backend-example-com
rules:
- host: backend.example.com
http:
paths:
- path: /v9/anonymous/set-data/?(.*)
backend:
serviceName: backend2
servicePort: 80
- path: /v9/?(.*)
backend:
serviceName: backend1
servicePort: 80
在服务中我得到
/v1/
但我应该得到
/v1/anonymous/set-data/foo/bar/
我需要重写路径中的所有版本/v1/
并且一些请求应该去后端1,但是后端2的一些特定路径
解决方案
找到解决方案
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: backend
annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /v1/$1
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/configuration-snippet: |
rewrite ^/v9/?(.*)$ /v1/$1 break;
spec:
tls:
- hosts:
- backend.example.com
secretName: backend-example-com
rules:
- host: backend.example.com
http:
paths:
- path: /v9/anonymous/set-data/?(.*)
backend:
serviceName: backend2
servicePort: 80
- path: /v9/?(.*)
backend:
serviceName: backend1
servicePort: 80
一切都重写/v1/
并按应有的方式工作
推荐阅读
- javascript - 是否可以在 JavaScript / TypeScript 中实现基于承诺的文件选择器 API?
- python-3.x - 在python中复制CONCATENATE和IF excel公式
- scipy - 获得置信区间 z 分数的错误值
- php - 如果 items.myfavourite 返回的不是 false,我想要 items.myfavourite =true。我怎样才能做到这一点
- android - 如何在 Native React 中创建直播播放客户端?
- iis - https 重定向的 URL 重写不适用于 iis10 上的端口 8443
- c# - HttpTwo.HPack dll 存在于 bin 文件夹中,但它没有出现在我的项目的引用中
- java - Swing:标准打印对话框中的属性按钮无效(Java 8)
- android - Android : 如何通过我的应用程序中的闭路电视摄像头访问和录制视频
- wordpress - Woocommerce 信用卡支付问题