Nginx 未找到Kubernetes入口非根路径404
当我尝试Nginx 未找到Kubernetes入口非根路径404,nginx,kubernetes,kubernetes-ingress,nginx-ingress,Nginx,Kubernetes,Kubernetes Ingress,Nginx Ingress,当我尝试:30080 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: app-deployment spec: replicas: 3 template: metadata: labels: name: app-node spec: containers: - name: app image: myregistry
:30080
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app-deployment
spec:
replicas: 3
template:
metadata:
labels:
name: app-node
spec:
containers:
- name: app
image: myregistry.net/repo/app:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
env:
- name: NODE_ENV
value: production
---
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
selector:
name: app-node
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30080
type: NodePort
我正在尝试使用入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: myhost.com
http:
paths:
- path: /app
backend:
serviceName: app-service
servicePort: 80
myhost.com
可与nginx简介屏幕配合使用,但myhost.com/app
提供了404未找到
。我的设置中的问题在哪里
更新:
- path: /
backend:
serviceName: app-service
servicePort: 80
如果我使用根路径,它会工作,但是为什么
/app
不会工作?您的入口定义创建规则,代理从{path}
到{backend.serviceName}{path}
的流量。在您的情况下,我认为它不起作用的原因是/app
被代理到app service:80/app
,但您打算在/
根目录下提供流量服务。尝试将此注释添加到您的入口资源:nginx.ingres.kubernetes.io/rewrite-target://
来源:root(/)可能指向默认后端,即nginx欢迎页面,但/app可能未正确配置,这就是为什么将请求路由到该页面时会出现404。尝试其他url,例如myhost.com/app1,查看是否显示nginx页面。如果我理解正确,是的,我希望
myhost.com/app/foo=>app service:80/foo
,而不是myhost.com/app/foo=>app service:80/app/foo
。这解释了为什么我的配置是错误的,以及为什么只有根配置(path://
)可以工作,但是nginx.ingres.kubernetes.io/rewrite-target://
似乎没有正确指向它。我还尝试了ingres.kubernetes.io/rewrite-target://
,但运气不佳。您是如何安装nginx-ingres
?你有舱单或说明书吗?(步骤3:创建入口资源)啊。该注释特定于nginx,但您的入口控制器由IBM管理(根据文档)。如果您是,那么注释可能会起作用。在您的情况下,请查看。似乎rewrite path
应该这样做,而不是nginx.ingres.kubernetes.io/rewrite target
我也尝试了ingres.bluemix.net/rewrite-path://
,但它不起作用,似乎与rewrite target
的功能不一样。令人困惑也许我应该咨询他们的支持,因为这一问题对于他们作为提供者来说似乎是特定的。我感谢你的帮助,为我指明了正确的方向,谢谢!