kubernetes - Kubernetes Nginx Ingress 未正确重定向到路径路由服务
问题描述
我正在为 kubernetes 使用入口。我的入口是 kubernetes nginx 入口。并且路由配置不起作用并在 https 部分中的每个请求中重定向我的根路径所有配置都在下面给出
cat frontapi-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: swagger-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: preprod-ops.kblab.local
http:
paths:
- backend:
serviceName: kb-workplace
servicePort: 8080
path: /
- backend:
serviceName: gw-branch
servicePort: 8443
path: /api
$ cat swagger-portal.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: swagger-portal
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: preprod-ops.kblab.local
http:
paths:
- backend:
serviceName: swagger-portal
servicePort: 9001
path: /swagger-portal
上面的配置适用于 http 配置,但下面的配置不适用于 https 配置。它只适用于招摇门户部分
$cat frontapi-ingress-https.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/secure-verify-ca-secret: preprod.kblab.local
kubernetes.io/ingress.class: nginx
generation: 1
name: app-ingress
spec:
rules:
- host: preprod.kblab.local
http:
paths:
- backend:
serviceName: gw-branch
servicePort: 8443
path: /api
- backend:
serviceName: kb-workplace
servicePort: 8080
path: /
- backend:
serviceName: acs-alfresco
servicePort: 8080
path: /acs
tls:
- hosts:
- preprod.kblab.local
- secretName: preprod.kblab.local
$ cat swagger-portal-https.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
name: swagger-portal
spec:
rules:
- host: preprod.kblab.local
http:
paths:
- backend:
serviceName: swagger-portal
servicePort: 9001
path: /swagger-portal/a
tls:
- hosts:
- preprod.kblab.local
- secretName: preprod.kblab.local
提前致谢。
解决方案
您正在Ingressnginx.ingress.kubernetes.io/rewrite-target: /
上设置注释swagger-portal-https.yaml
,这明确暗示重定向到根路径。
如果要保留请求路径,则需要去掉这个注解。
推荐阅读
- linux - 如何为 Raspberry Pi Zero W 交叉编译 Rust 代码
- python - 为什么 ThreadPoolExecutor 的默认 max_workers 是根据 CPU 的数量来决定的?
- ios - Swift Firebase - 如何从 GeoFire 获取单个用户的位置
- azure - 将 SQL VM 移至 CSP 订阅
- java - 如何让 Spring 的 WebFlux 发出响应
- opendaylight - 如何为 Neon relese 生成原型?
- ruby-on-rails - ActionController::UnknownFormat (ActionController::UnknownFormat)
- node.js - 节点或shell脚本中有没有办法知道子进程是否启动了自己的子进程?
- javascript - 类似的双括号是什么意思()()?
- graphql - 创建突变组件