首页 > 解决方案 > kubernetes nginx入口重写目标不起作用

问题描述

我正在关注来自https://kubernetes.github.io/ingress-nginx/examples/rewrite/的重写目标指南。但它不像我预期的那样工作

这是我的入口。

kind: Ingress
metadata:
  name: ingress-resource
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
spec:
  rules:
    - host: "test.gamedrive.cc"
      http:
        paths:
          - path: /player-gateway(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: player-gateway
                port:
                  number: 80

如果向/player-gateway/health/startup发出请求, 则应将其重写为/health/startup

但是从 Nginx 重写的数据是data:"/"并得到 404 错误代码。这是来自 Nginx 的日志

2021/11/07 06:58:03 [通知] 312#312: 26100 "(?i)/player-gateway(/|$)(. )" 匹配 "/player-gateway/health/startup",客户端: 113.53.150.16,服务器:test.gamedrive.cc,请求:“GET /player-gateway/health/startup HTTP/1.1”,主机:“test.gamedrive.cc”2021/11/07 06:58:03 [通知] 312#312: *26100 重写数据:“/”,args:“”,客户端:113.53.150.16,服务器:test.gamedrive.cc,请求:“GET /player-gateway/health/startup HTTP/1.1”,主机:“test.gamedrive.cc”113.53.150.16 - - [07/Nov/2021:06:58:03 +0000]“GET /player-gateway/health/startup HTTP/1.1”404 139“-”“PostmanRuntime /7.28.4" 258 0.001 [default-player-gateway-80] [] 10.244.0.109:80 139 0.000 404 e834c8338f2938ffc84db4e7e4053706

我尝试通过更改nginx.ingress.kubernetes.io/rewrite-target: /$2为进行调试nginx.ingress.kubernetes.io/rewrite-target: /health/startup

并且响应代码是预期的 200

2021/11/07 07:04:32 [通知] 452#452: 29805 "(?i)/player-gateway(/|$)(. )" 匹配 "/player-gateway/health/startup",客户端: 113.53.150.16,服务器:test.gamedrive.cc,请求:“GET /player-gateway/health/startup HTTP/1.1”,主机:“test.gamedrive.cc” 2021/11/07 07:04:32 [通知] 452#452: *29805 重写数据:“/health/startup”,args:“”,客户端:113.53.150.16,服务器:test.gamedrive.cc,请求:“GET /player-gateway/health/startup HTTP/ 1.1",主机:"test.gamedrive.cc" 113.53.150.16 - - [07/Nov/2021:07:04:32 +0000] "GET /player-gateway/health/startup HTTP/1.1" 200 2 "- ““邮递员运行时/7.28.4”258 0.002 [default-player-gateway-80] [] 10.244.0.109:80 2 0.000 200 66967d6ab87d542f3269860107a4b7c4

似乎 /$2 或 (/|$)(.*) 不起作用。

请帮我解决这个问题。谢谢。

标签: nginxkuberneteskubernetes-ingressnginx-ingress

解决方案


推荐阅读