Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 655
alleb57 Avatar asked Aug 03 '14 15:08

alleb57


2 Answers

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.

like image 158
Jon Phenow Avatar answered Sep 21 '22 01:09

Jon Phenow


Adding

resolver 127.0.0.1;

helps, but it's very strange...

like image 33
alleb57 Avatar answered Sep 19 '22 01:09

alleb57