免责声明:
在意识到 stack overflow 意味着编码问题之前,我曾经打开过一个类似的 stack overflow 问题......
我的问题:
我正在尝试通过 ssh 隧道访问连接到我的 nginx 服务器的 Web 服务。如果我通过 ssh 连接服务器并 curl 隧道端口,它就可以完美运行。我的下一步是在我的 nginx 配置上执行 proxy_pass,以允许我们通过给定端口访问该服务。我确信我已经使用以下配置成功了:
location ~ ^/test/([0-9]+)/ {
#allow our.ip/32;
proxy_pass http://127.0.0.1:$1/;
}
当索引加载时,它会尝试重定向到名为 login.php 的页面(该页面存在,我可以使用 curl localhost:port/login.php 访问该页面)。经过一番研究,我想出了从 location 和 proxy_pass 中删除斜杠的解决方案,使其看起来像这样:
location ~ ^/test/([0-9]+) {
#allow our.ip/32;
proxy_pass http://127.0.0.1:$1;
}
这几乎就是您在大多数示例中发现的,但它不起作用。它只是 502,我不知道为什么。
编辑
这是来自请求的 nginx 错误日志:
2021/01/11 14:21:49 [error] 88542#88542: *19093 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: my.server.address, request: "GET /test/1480/ HTTP/2.0", upstream: "http://127.0.0.1:1480/test/1480/", host: "my.server.address"
它不应该将“/test/”传递给远程主机......