为什么 nginx 在我的 Kubernetes Ingress 路由上返回 404?

拉斯

我设置了两个 nginx Web 服务器。一个设置在 AWS Elastic Beanstalk 上,另一个设置在 Kubernetes 上,使用 stable/nginx-ingress helm chart。

Elastic Beanstalk 网络服务器将流量从我域的所有子路由转发到 Kubernetes nginx 网络服务器。我可以通过检查来自 Kubernetes nginx 的日志来验证这些是否被正确转发。我使用 Ingress 资源来确保将此流量转发到正确的 Kubernetes 服务。

问题是:两条路由之一,主/路由,被转发到正确的服务并返回 200。另一条路/eks-test由应该路由到相同的服务,但返回 404。这怎么可能?

规格

Kubernetes 上的 nginx 正在运行 nginx 0.25.1我在 AWS EKS 1.14 版上运行 Kubernetes。

Nginx 日志:

172.16.10.103 - [172.16.10.103] - - [12/Sep/2019:08:05:09 +0000] "GET / HTTP/1.0" 200 8 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" 703 0.004 [default-eks-test-repo-80] [] 172.16.10.100:8080 8 0.004 200 90dfa37364a5c43e57f12c5fb1a2d86f
172.16.40.108 - [172.16.40.108] - - [12/Sep/2019:08:05:12 +0000] "GET /eks-test HTTP/1.0" 404 9 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" 730 0.002 [default-eks-test-repo2-80] [] 172.16.43.125:8080 9 0.004 404 ef1c81bba75dff2bdd2376799aa93c56

第一个 nginx 配置(Elastic Beanstalk):

server {
    listen 80;

    server_name my.domain.com;

    location / {

        proxy_pass http://internal.my.domain.lan/;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Kubernetes 入口资源:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: internal
  name: eks-test
  namespace: default
spec:
  rules:
    - host: my.domain.com
      http:
        paths:
          - path: /
            backend:
              serviceName: eks-test-repo
              servicePort: 80
          - path: /eks-test
            backend:
              serviceName: eks-test-repo
              servicePort: 80

Kubernetes 服务:

kind: Service
apiVersion: v1
metadata:
  name: eks-test-repo
  namespace: default
  labels:
    name: eks-test-repo
spec
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: eks-test-repo
  type: ClusterIP

Nginx 掌舵图表值(非默认值):

controller.ingressClass: internal
拉斯

这个问题的答案可以在这里找到

基本上,路径没有被重写为/,但是 pod 中的网络服务器只在根路径上侦听。添加nginx.ingress.kubernetes.io/rewrite-target: /注释解决了问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

kubernetes nginx ingress controller / caching static assets

来自分类Dev

为什么我在Azure上的代码隐藏出现404错误?

来自分类Dev

为什么我的WebAPI RESTful路由会引发404错误?

来自分类Dev

Nginx Ingress Controller在Google Kubernetes Engine上找不到节点

来自分类Dev

为什么Kubernetes Ingress默认在其负载均衡器上创建* two *健康检查?

来自分类Dev

使用NGINX Ingress进行Kubernetes角色管理

来自分类Dev

当我有多个Pod时,Nginx Ingress返回自定义http错误

来自分类Dev

Kubernetes NGINX-INGRESS我需要运行NGINX服务吗?

来自分类Dev

Vue.js进入Kubernetes集群,刷新后Nginx Ingress返回404

来自分类Dev

Kubernetes Nginx Ingress文件上传返回502

来自分类Dev

为什么我的Nginx Ingress控制器给出503s?

来自分类Dev

在Docker Windows上运行kubernetes ingress-nginx时找不到404页面

来自分类Dev

Nginx / Angular应用的Istio Ingress路由失败并显示404

来自分类Dev

Nginx入口控制器返回404 Kubernetes

来自分类Dev

带有Angular的Kubernetes NGINX Ingress返回错误的MIME类型

来自分类Dev

Kubernetes Nginx Ingress删除部分URL

来自分类Dev

从Kubernetes NGINX Ingress控制器公开服务始终返回502 Bad Gateway

来自分类Dev

当我访问不带www的URL时,nginx返回404

来自分类Dev

kubernetes nginx.ingress多个websocket服务

来自分类Dev

kubernetes nginx.ingress多个websocket服务

来自分类Dev

为什么我在Azure上的代码隐藏出现404错误?

来自分类Dev

为什么我的Nginx失败了?

来自分类Dev

为什么在加载资产时nginx从平均服务器返回404?

来自分类Dev

为什么Nginx在我的Kubernetes入口路由上返回404?

来自分类Dev

为什么我对 PHP 文件的 Angular POST 请求返回 404?

来自分类Dev

AWS 上的 Kubernetes:使用 nginx-ingress + cert-manager 保留客户端 IP

来自分类Dev

我的测试 Web 应用程序显示错误,我在 Dockerfile 中使用 nginx - kubernetes minikube 中的 ingress

来自分类Dev

Kubernetes 服务的 Nginx 路由

来自分类Dev

为什么来自运行在 nginx 上的应用程序的传出请求未命中 Kubernetes 服务

Related 相关文章

  1. 1

    kubernetes nginx ingress controller / caching static assets

  2. 2

    为什么我在Azure上的代码隐藏出现404错误?

  3. 3

    为什么我的WebAPI RESTful路由会引发404错误?

  4. 4

    Nginx Ingress Controller在Google Kubernetes Engine上找不到节点

  5. 5

    为什么Kubernetes Ingress默认在其负载均衡器上创建* two *健康检查?

  6. 6

    使用NGINX Ingress进行Kubernetes角色管理

  7. 7

    当我有多个Pod时,Nginx Ingress返回自定义http错误

  8. 8

    Kubernetes NGINX-INGRESS我需要运行NGINX服务吗?

  9. 9

    Vue.js进入Kubernetes集群,刷新后Nginx Ingress返回404

  10. 10

    Kubernetes Nginx Ingress文件上传返回502

  11. 11

    为什么我的Nginx Ingress控制器给出503s?

  12. 12

    在Docker Windows上运行kubernetes ingress-nginx时找不到404页面

  13. 13

    Nginx / Angular应用的Istio Ingress路由失败并显示404

  14. 14

    Nginx入口控制器返回404 Kubernetes

  15. 15

    带有Angular的Kubernetes NGINX Ingress返回错误的MIME类型

  16. 16

    Kubernetes Nginx Ingress删除部分URL

  17. 17

    从Kubernetes NGINX Ingress控制器公开服务始终返回502 Bad Gateway

  18. 18

    当我访问不带www的URL时,nginx返回404

  19. 19

    kubernetes nginx.ingress多个websocket服务

  20. 20

    kubernetes nginx.ingress多个websocket服务

  21. 21

    为什么我在Azure上的代码隐藏出现404错误?

  22. 22

    为什么我的Nginx失败了?

  23. 23

    为什么在加载资产时nginx从平均服务器返回404?

  24. 24

    为什么Nginx在我的Kubernetes入口路由上返回404?

  25. 25

    为什么我对 PHP 文件的 Angular POST 请求返回 404?

  26. 26

    AWS 上的 Kubernetes:使用 nginx-ingress + cert-manager 保留客户端 IP

  27. 27

    我的测试 Web 应用程序显示错误,我在 Dockerfile 中使用 nginx - kubernetes minikube 中的 ingress

  28. 28

    Kubernetes 服务的 Nginx 路由

  29. 29

    为什么来自运行在 nginx 上的应用程序的传出请求未命中 Kubernetes 服务

热门标签

归档