nginx代理重定向与uri的端口

all*_*b57 6 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/;
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.现在我尝试将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/;
}
Run Code Online (Sandbox Code Playgroud)

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

no resolver defined to resolve localhost
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

Jon*_*now 5

从@ alleb57的答案开始-似乎localhost在此刻配置还没有定义。我转换为http://127.0.0.1在整个配置中使用(over localhost),而不必定义解析器。


all*_*b57 4

添加

resolver 127.0.0.1;
Run Code Online (Sandbox Code Playgroud)

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

  • 对我不起作用:`[错误] 7#7:解析时发送()失败(111:连接被拒绝),解析器:127.0.0.1:53` (7认同)