我的测试 Web 应用程序出现错误,我在 Dockerfile 中使用 nginx - 进入 kubernetes minikube

My test web app is showing up error, I am using nginx in Dockerfile - ingress in kubernetes minikube

我正在尝试 kubernetes (minikube) 中的入口资源。我已经创建了 pod 和 NodePort 服务,当我 curl 192.168.99.100:30290

时它工作正常

然后我用 / 路径创建了入口,如果我添加 curl **-kL** 192.168.99.100

它仍然可以正常工作

但是当我在入口路径路径中添加 /anypath 时它 return 错误页面当我 curl **-kL** 192.168.99.100/anypath

kind: Pod apiVersion: v1 metadata: name: test-web labels: app: test-web spec: containers: - name: test-web image: aamirpinger/test-web ports: - containerPort: 80 # default nginx port

---

kind: Service apiVersion: v1 metadata: name: test-web-service spec: selector: app: test-web ports: - port: 8080 targetPort: 80 # default nginx port type: NodePort

---

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: pwa-ingress spec: rules: - http: paths: - path: /anypath backend: serviceName: test-web-service servicePort: 8080



资源列表

kubectl get pod,svc,ingress NAME READY STATUS RESTARTS AGE pod/test-web 1/1 Running 0 7m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11m service/test-web-service NodePort 10.98.17.107 <none> 8080:30290/TCP 7m NAME HOSTS ADDRESS PORTS AGE ingress.extensions/pwa-ingress * 10.0.2.15 80 7m

curl -kL 192.168.99.100/任意路径


收到以下结果

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.15.5</center>
</body>
</html>

预期结果

<html>
<head>
<title>Test Page</title>

</head>
<body>
<h1>Hello World</h1>
</body>
</html>

有谁知道我在上面遗漏了什么以使其正常工作?

您的网络应用程序是否处理此路径?从 nginx 方面来看,一切似乎都很好,它处理了请求。 您可以尝试 "nginx.ingress.kubernetes.io/rewrite-target: /" 注释,以便 nginx 将在请求中重写所需的目标。

如果您使用 nginx 手动启动 docker 容器,并将端口 80 暴露为某个本地端口,它是否可以导航到 /anypath ?您可以从您的 pod 访问 nginx 访问日志吗?

啊啊啊!!!终于得到了我的答案。 annotation: "nginx.ingress.kubernetes.io/rewrite-target: /" 我正在做注释但在开始时缺少 "nginx." 这只是错误的原因并且花了我一整天。这一行的目的实际上是从我们在 curl 之前编写的任何路由重定向到 root。因为 root 是我们通常拥有入口点的地方,即 index.html 在我的例子中。