【发布时间】:2021-03-12 01:15:17
【问题描述】:
我有一个在 kubernetes 中运行的应用程序,我可以从我的浏览器在集群外部访问:
http://myapp.internal/myapp/content
使用以下入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
app.kubernetes.io/instance: myapp
app.kubernetes.io/name: myapp
name: myapp
namespace: samples
spec:
rules:
- host: myapp.internal
http:
paths:
- backend:
serviceName: myapp
servicePort: 8080
path: /myapp/content
status:
loadBalancer:
ingress:
- {}
现在我想访问它:
而不是修改我的应用程序(目前不是一个选项)。
基于:
https://kubernetes.github.io/ingress-nginx/examples/rewrite/
看来我可以做到:
nginx.ingress.kubernetes.io/rewrite-target: /myapp/content
所以我更新了我的入口,如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /myapp/content
labels:
app.kubernetes.io/instance: myapp
app.kubernetes.io/name: myapp
name: myapp
namespace: samples
spec:
rules:
- host: myapp.internal
http:
paths:
- backend:
serviceName: myapp
servicePort: 8080
path: /content
status:
loadBalancer:
ingress:
- {}
我现在假设当我进入时:
在我的浏览器中,上面的 rewrite-target 规则然后将其转换为:
http://myapp.internal//myapp/content
它实际上是这样做的。但我没有看到我的内容,而是得到了:
default backend - 404
基本上我需要这个例子的反面:
https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/rewrite
原来的例子说:
rewrite.bar.com/something/new rewrites to rewrite.bar.com/new
我需要的地方:
rewrite.bar.com/new rewrites to rewrite.bar.com/something/new
我错过了什么?
【问题讨论】:
标签: nginx kubernetes