Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx Ngnix入口重写目标不工作_Nginx_Kubernetes_Minikube_Nginx Ingress - Fatal编程技术网

Nginx Ngnix入口重写目标不工作

Nginx Ngnix入口重写目标不工作,nginx,kubernetes,minikube,nginx-ingress,Nginx,Kubernetes,Minikube,Nginx Ingress,我完全按照这里说的做了: 创建入口后,我将rewrite.bar.com添加到我的/etc/hosts到minikube的ip中。 coffee svs是本例中的服务: 然而,没有重写发生,我有与这里显示的完全相同的用例:,但是提议的解决方案不起作用 当我做curl rewrite.bar.com/something时,有一个404未找到响应 预期的行为是将rewrite.bar.com/something重写为rewrite.bar.com/,然后在路径/上调用coffee svc 同时执行c

我完全按照这里说的做了:

创建入口后,我将
rewrite.bar.com
添加到我的
/etc/hosts
到minikube的ip中。
coffee svs
是本例中的服务:

然而,没有重写发生,我有与这里显示的完全相同的用例:,但是提议的解决方案不起作用

当我做
curl rewrite.bar.com/something
时,有一个
404未找到
响应

预期的行为是将
rewrite.bar.com/something
重写为
rewrite.bar.com/
,然后在路径
/
上调用coffee svc

同时执行
curl-I-k rewrite.bar.com/
返回:

HTTP/1.1 404 Not Found
Server: nginx/1.17.9
Date: Sat, 02 May 2020 15:24:02 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive
我使用
stable/nginx-ingres
,当前版本为
0.30.0
,在头盔上安装了nginx-ingres

Kubernetes的版本是
1.14

编辑: 添加入口控制器pod日志

I0502 15:52:00.344425       7 flags.go:215] Watching for Ingress class: nginx
W0502 15:52:00.344820       7 flags.go:260] SSL certificate chain completion is disabled (--enable-ssl-chain-completion=false)
W0502 15:52:00.344909       7 client_config.go:543] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0502 15:52:00.345341       7 main.go:193] Creating API client for https://10.96.0.1:443
I0502 15:52:00.355089       7 main.go:237] Running in Kubernetes cluster version v1.14 (v1.14.1) - git (clean) commit b7394102d6ef778017f2ca4046abbaa23b88c290 - platform linux/amd64
I0502 15:52:00.358184       7 main.go:91] Validated default/my-nginx-ingress-default-backend as the default backend.
I0502 15:52:00.836581       7 main.go:102] SSL fake certificate created /etc/ingress-controller/ssl/default-fake-certificate.pem
W0502 15:52:00.873934       7 store.go:628] Unexpected error reading configuration configmap: configmaps "my-nginx-ingress-controller" not found
I0502 15:52:00.911054       7 nginx.go:263] Starting NGINX Ingress controller
I0502 15:52:02.035037       7 event.go:281] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"rewrite", UID:"60b7853f-8c86-11ea-b3ad-080027f64399", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"367651", FieldPath:""}): type: 'Normal' reason: 'CREATE' Ingress default/rewrite
I0502 15:52:02.113846       7 nginx.go:307] Starting NGINX process
I0502 15:52:02.116614       7 leaderelection.go:242] attempting to acquire leader lease  default/ingress-controller-leader-nginx...
I0502 15:52:02.123127       7 controller.go:137] Configuration changes detected, backend reload required.
I0502 15:52:02.135944       7 status.go:86] new leader elected: my-nginx-ingress-controller-6fcc8d7f97-r9d8t
I0502 15:52:02.321762       7 controller.go:153] Backend successfully reloaded.
I0502 15:52:02.321833       7 controller.go:162] Initial sync, sleeping for 1 second.
I0502 15:52:55.451512       7 leaderelection.go:252] successfully acquired lease default/ingress-controller-leader-nginx
I0502 15:52:55.452458       7 status.go:86] new leader elected: my-nginx-ingress-controller-6fcc8d7f97-7p8g6
I0502 15:52:55.470245       7 status.go:274] updating Ingress default/rewrite status from [] to [{10.0.2.15 }]
I0502 15:52:55.475571       7 event.go:281] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"rewrite", UID:"60b7853f-8c86-11ea-b3ad-080027f64399", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"367750", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress default/rewrite
I0502 15:53:18.288519       7 controller.go:137] Configuration changes detected, backend reload required.
I0502 15:53:18.291422       7 event.go:281] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"rewrite", UID:"60b7853f-8c86-11ea-b3ad-080027f64399", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"367783", FieldPath:""}): type: 'Normal' reason: 'DELETE' Ingress default/rewrite
I0502 15:53:18.403753       7 controller.go:153] Backend successfully reloaded.
I0502 15:53:20.187998       7 event.go:281] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"rewrite", UID:"0ba43588-8c8d-11ea-b3ad-080027f64399", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"367788", FieldPath:""}): type: 'Normal' reason: 'CREATE' Ingress default/rewrite
I0502 15:53:21.623215       7 controller.go:137] Configuration changes detected, backend reload required.
I0502 15:53:21.796798       7 controller.go:153] Backend successfully reloaded.

curl命令应该是

curl rewrite.bar.com/something --header "Host: rewrite.bar.com"
Host
头是nginx用来知道哪个主机发送了请求,并应用主机
rewrite.bar.com
的入口规则,然后按照规则中的定义进行重写

如果使用浏览器访问同一url,则浏览器会自动发送此标题

使用下面的代码通过另一个pod的curl测试服务

kubectl run curl --image=radial/busyboxplus:curl -i --tty

If you don't see a command prompt, try pressing enter.

[ root@curl:/ ]$ curl coffee-svc

最后,我通过移除整个minikube集群解决了这个问题:

minikube delete
minikube start

在某个地方,某种程度上,有一个配置影响了入口。然后它工作得很好。Pitty我不知道罪魁祸首的配置或部署。

但是ingress重写应该删除
某物,这就是拥有重写部分和`/something的全部意义。如果从另一个pod直接在同一端点上卷曲服务,它会返回类似的响应吗?rewrite.bar.com/nginxUsing curl rewrite.bar.com/something的响应是什么——标题“Host:rewrite.bar.com”应该直接从另一个pod工作吗?如果这不起作用,则是服务问题或其他问题,而不是kubectl Descripte svc servicename的ingressshare输出问题。如果你直接卷曲吊舱IP,它能工作吗?
minikube delete
minikube start