Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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 未找到Kubernetes入口非根路径404_Nginx_Kubernetes_Kubernetes Ingress_Nginx Ingress - Fatal编程技术网

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
的功能不一样。令人困惑也许我应该咨询他们的支持,因为这一问题对于他们作为提供者来说似乎是特定的。我感谢你的帮助,为我指明了正确的方向,谢谢!