nginx proxy redirection with port from uri

2019-06-20 05:44发布

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!

2条回答
萌系小妹纸
2楼-- · 2019-06-20 06:22

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.

查看更多
贼婆χ
3楼-- · 2019-06-20 06:35

Adding

resolver 127.0.0.1;

helps, but it's very strange...

查看更多
登录 后发表回答