-
Notifications
You must be signed in to change notification settings - Fork 8.4k
Description
I'm using a complex proxy_redirect
instruction directly in nginx and it works, it changes the Location
header so that clients are redirected to an ingress for direct connection to a specific statefulset instance. The instruction is this:
proxy_redirect ~^.*\/\/pod-(?<pod_nr>\d+?)(\..*\.svc\.cluster\.local)?(:\d*)?(?<pod_path>\/.*)?$ https://p-$pod_nr.project.example.com$pod_path;
This worked for years but we're moving to using ingress-nginx instead of managing nginx configs. I'm now trying to create the same thing using annotations, so tried the following:
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-redirect-from: '~*^.*\/\/pod-(?<pod_nr>\d+?)(\..*\.svc\.cluster\.local)?(:\d*)?(?<pod_path>\/.*)?$'
nginx.ingress.kubernetes.io/proxy-redirect-to: "https://p-$pod_nr.project.example.com$pod_path"
However I get these two errors in the logs:
ingress-nginx-controller-59d9446fd6-fv265 controller W1129 16:43:09.772362 7 validators.go:221] validation error on ingress ns/pod-ingress: annotation proxy-redirect-from contains invalid value ~*^.*\/\/pod-(?<pod_nr>\d+?)(\..*\.svc\.cluster\.local)?(:\d*)?(?<pod_path>\/.*)?$
ingress-nginx-controller-59d9446fd6-fv265 controller W1129 16:43:09.773233 7 validators.go:221] validation error on ingress ns/pod-ingress: annotation proxy-redirect-to contains invalid value https://p-$pod_nr.project.example.com$pod_path
Now, I need guidance on why this is being refused while working perfectly in nginx and how to fix it. Tried to use a nginx.ingress.kubernetes.io/configuration-snippet
directly but then I got:
nginx: [emerg] "proxy_redirect" directive is duplicate in /tmp/nginx/nginx-cfg3481804691:726
as the ingress controller always inserts a proxy_redirect off;
instruction and that is not possible to disable.
Without editing the ingress template directly, how can I implement this?
Metadata
Metadata
Assignees
Labels
Type
Projects
Status