alleb57
alleb57

Reputation: 151

nginx proxy redirection with port from uri

I'm trying to make redirections using nginx. The idea is to redirect uri /id_1234/ to localhost:1234 for some ports. The redirection for the fixed port:

location /id_1234/ {
    rewrite ^/id_1234/(.*) /$1 break;
    proxy_pass http://localhost:1234;
    proxy_redirect http://localhost:1234/ $scheme://$host/id_1234/;
}

It works just fine. Now I try to change 1234 to any port:

location ~* ^/id_([0-9]*)/ {
    rewrite ^/id_([0-9]*)/(.*)$ /$2 break;
    proxy_pass http://localhost:$1;
    proxy_redirect http://localhost:$1/ $scheme://$host/id_$1/;
}

With this config, I get a 502 error, with the following error in log:

no resolver defined to resolve localhost

If I change $1 to actual port after localhost:, it works fine for the specified port. How can be redirection port specified using regex?

Thanks in advance!

Upvotes: 6

Views: 8771

Answers (2)

Jon Phenow
Jon Phenow

Reputation: 4144

Following up from @alleb57's answer - it appears that there just isn't a definition for localhost at this point of the configuration. I converted to using http://127.0.0.1 throughout the config (over localhost) and you don't have to define the resolver.

Upvotes: 5

alleb57
alleb57

Reputation: 151

Adding

resolver 127.0.0.1;

helps, but it's very strange...

Upvotes: 4

Related Questions