nginx代理重定向与uri的端口

时间:2014-08-03 15:56:54

标签: regex redirect nginx

我试图使用nginx进行重定向。想法是将uri / id_1234 /重定向到localhost:1234以用于某些端口。固定端口的重定向:

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

它运作得很好。现在我尝试将1234更改为任何端口:

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

使用此配置,我收到502错误,日志中出现以下错误:

no resolver defined to resolve localhost

如果我在localhost:之后将$ 1更改为实际端口,则它适用于指定的端口。如何使用正则表达式指定重定向端口?

提前致谢!

2 个答案:

答案 0 :(得分:4)

添加

resolver 127.0.0.1;

有帮助,但这很奇怪......

答案 1 :(得分:3)

跟随@ alleb57的回答 - 似乎在配置的这一点上没有localhost的定义。我转换为在整个配置中使用http://127.0.0.1(超过localhost),您无需定义解析器。