为nginx入口重写路径
我需要将入口指向图像,这样我的播客就可以完整地获取URL。我有以下配置:为nginx入口重写路径,nginx,kubernetes,minikube,kubernetes-ingress,Nginx,Kubernetes,Minikube,Kubernetes Ingress,我需要将入口指向图像,这样我的播客就可以完整地获取URL。我有以下配置: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: solar-demo annotations: nginx.org/server-snippet: "proxy_ssl_verify off;" nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - h
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: solar-demo
annotations:
nginx.org/server-snippet: "proxy_ssl_verify off;"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: shmukler.example.com
http:
paths:
- path: /city/*
backend:
serviceName: solar-demo
servicePort: 3000
- path: /solar/*
backend:
serviceName: solar-demo
servicePort: 3001
如果我保留以下行:nginx.ingres.kubernetes.io/rewrite-target://
,我在POD中的服务将获得重写路径,因此/city/dublin
将成为/dublin
如果我注释掉行nginx.ingres.kubernetes.io/rewrite-target://
,我只会在客户端得到503
错误,而日志中没有任何内容。通过rewrite,我的服务为我提供了404
,因为没有路线/dublin
我做错了什么?我怎么能通过这条路让吊舱响应呢
$ kubectl describe svc solar-demo
Name: solar-demo
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration=
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"solar-demo","namespace":"default"},"spec":{"ports":[{"name":"city","port":3000...
Selector: app=testapp
Type: ClusterIP
IP: 10.107.221.76
Port: city 3000/TCP
TargetPort: 3000/TCP
Endpoints: 172.17.0.3:3000,172.17.0.8:3000
Port: solar 3001/TCP
TargetPort: 3001/TCP
Endpoints: 172.17.0.3:3001,172.17.0.8:3001
Session Affinity: None
Events: <none>
$kubectl介绍svc太阳能演示
名称:solar demo
名称空间:默认值
标签:
注释:kubectl.kubernetes.io/上次应用的配置=
{“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“名称”:“太阳能演示”,“命名空间”:“默认”},“规范”:{“端口”:[{“名称”:“城市”,“端口”:3000。。。
选择器:app=testapp
类型:集群
IP:10.107.221.76
港口:城市3000/TCP
目标端口:3000/TCP
终点:172.17.0.3:3000172.17.0.8:3000
端口:solar 3001/TCP
目标端口:3001/TCP
终点:172.17.0.3:3001172.17.0.8:3001
会话关联:无
活动:
建议?这里应该有一个工作配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: solar-demo
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: shmukler.example.com
http:
paths:
- path: /city
backend:
serviceName: solar-demo
servicePort: 3000
- path: /solar
backend:
serviceName: solar-demo
servicePort: 3001
改变了什么:
- 已从路径中删除
*
- 注释中指定的入口
- 已删除重新写入批注
入口上的
路径
(使用nginx
入口时)就像指定nginxlocation
块一样。nginx
在位置块中不使用*
字符。谢谢。它在minikube
上对我不起作用。不过,我确实非常感谢您的尝试。关于引用ingress.class
的好提示。但是,对我来说,它显然不起作用。如果是你正在运行minikube,什么版本?也尝试了作为一个类的nginx internal
。没有错误,同样的503错误。在Azure Ingress上是一个Pod,所以有日志。他们为minikube
提供的插件非常棒,但我只能让它与重写目标
一起工作,这并不理想。这并不意味着插件有什么问题吗?
。只是让新手更难理解。:)我写这篇文章的时候已经很晚了。后面的斜杠不应该也在那里。是我的错。我刚刚删除了斜杠。你现在能试一下上面的吗?只要/${path}
是我尝试的第一件事。它在Azure上工作,但出于某种原因,minikube
想要/${path}/*
。