I am following rewrite-target guide from https://kubernetes.github.io/ingress-nginx/examples/rewrite/. But it doesn't work as I expected
Here is my ingress.
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
If make a request to /player-gateway/health/startup it should rewritten to /health/startup.
But rewritten data from Nginx is data: "/" and got 404 error code. Here is the log from Nginx
2021/11/07 06:58:03 [notice] 312#312: 26100 "(?i)/player-gateway(/|$)(.)" matches "/player-gateway/health/startup", client: 113.53.150.16, server: test.gamedrive.cc, request: "GET /player-gateway/health/startup HTTP/1.1", host: "test.gamedrive.cc" 2021/11/07 06:58:03 [notice] 312#312: *26100 rewritten data: "/", args: "", client: 113.53.150.16, server: test.gamedrive.cc, request: "GET /player-gateway/health/startup HTTP/1.1", host: "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
I try to debug by changed nginx.ingress.kubernetes.io/rewrite-target: /$2 to nginx.ingress.kubernetes.io/rewrite-target: /health/startup.
and the response code is 200 as expected
2021/11/07 07:04:32 [notice] 452#452: 29805 "(?i)/player-gateway(/|$)(.)" matches "/player-gateway/health/startup", client: 113.53.150.16, server: test.gamedrive.cc, request: "GET /player-gateway/health/startup HTTP/1.1", host: "test.gamedrive.cc" 2021/11/07 07:04:32 [notice] 452#452: *29805 rewritten data: "/health/startup", args: "", client: 113.53.150.16, server: test.gamedrive.cc, request: "GET /player-gateway/health/startup HTTP/1.1", host: "test.gamedrive.cc" 113.53.150.16 - - [07/Nov/2021:07:04:32 +0000] "GET /player-gateway/health/startup HTTP/1.1" 200 2 "-" "PostmanRuntime/7.28.4" 258 0.002 [default-player-gateway-80] [] 10.244.0.109:80 2 0.000 200 66967d6ab87d542f3269860107a4b7c4
Seem like /$2 or (/|$)(.*) is not working.
Please help me solve this problem. Thanks.