Ali*_*hdi 5 docker kubernetes kubernetes-ingress nginx-ingress
我的集群上安装了 nginx ingress。这是 yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-client
annotations:
kubernetes.io/ingress.class: nginx
namespace: dev
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: client-service
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 80
Run Code Online (Sandbox Code Playgroud)
当我点击 / 前缀时,效果很好。卷曲http://example.com(一切都很好)
问题:
但是当我点击 / api 前缀时,它返回服务的 /api 而不是服务的 /
curl http://example.com/api(它应该链接到 api-service,但它链接到 api-service/api )
任何帮助将不胜感激!
您可以使用nginx.ingress.kubernetes.io/rewrite-target:
在某些场景中,后端服务中公开的 URL 与 Ingress 规则中指定的路径不同。如果没有重写,任何请求都将返回 404。将注释 nginx.ingress.kubernetes.io/rewrite-target 设置为服务期望的路径。
因此,在这里您可以更改您的入口,如下所示:
metadata:
name: ingress-client
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
namespace: dev
Run Code Online (Sandbox Code Playgroud)
上面的入口定义将导致以下重写:
api-service/api
重写为api-service/
归档时间: |
|
查看次数: |
7361 次 |
最近记录: |