我正在尝试在nginx中使用proxy_pass将请求转发到localhost上的另一个端口,如下所示:
location /foo {
rewrite ^/foo/(.*) /$1 break;
proxy_pass http://127.0.0.1:8080/;
}
location /bar {
rewrite ^/bar/(.*) /$1 break;
proxy_pass http://localhost:8080/;
}
location /blah {
rewrite ^/blah/(.*) /$1 break;
proxy_pass http://192.168.77.56:8080/;
}
所以只有最后一个有效。前两个给我一个页面不可用的错误。 我知道端点正在工作,因为我可以直接访问localhost:8080并查看我期望的输出。
知道我做错了吗?
[编辑]:进一步的启示......似乎改写行与它有关。像我这样使用它似乎可以在非本地主机IP上工作,即它从路径中删除/删除并保留其余部分,因为它将其发送到最终目的地。如果我删除了重写行,我可以代理到localhost(当然会丢失我在网址上缩进的其他内容)。
答案 0 :(得分:2)
这有效:
location /blah {
rewrite ^/blah/(.*) /$1 break;
proxy_pass http://$server_addr:8080;
}