如何停止nginx解析目标路径?

如何停止nginx解析目标路径?

我的用例需要 nginx 重写目标 URL,将请求 uri 的最后一段转换为由 wireguard vpn 访问的目标服务端口。下一个配置版本运行良好。也就是说,我的后端托管应用程序已成功发布,但 auth_request 指令被忽略 =>

  location /publish {
    auth_request /auth;

    rewrite ^/publish/([0-9]+) http://10.11.2.3:$1;
    proxy_http_version 1.1;
  }

我已经证明身份验证服务运行正常。我在尝试解析需要端口但不需要路径的目标 URL 时遇到了问题。

  location ~ ^/publish/([0-9]+)$ {
    auth_request /auth;

    proxy_pass http://10.11.2.3:$1/;
    proxy_http_version 1.1;
  }

此配置失败,因为我的后端服务拒绝尾部斜杠。错误日志 =>

(111:连接被拒绝)连接到上游时,客户端:xx.xx.xx.xx,服务器:api.myservice.com,请求:“GET /publish/5500 HTTP/1.1”,上游:“http://10.11.2.3:5500/”

如果将上述配置更改为proxy_pass http://10.11.2.3:$1;,则如预期的那样,将附加完整的 uri 路径。错误详细信息 =>upsteam: http://10.11.2.3:5500/publish/5500

我也尝试过将 rewrite 与 break 结合起来,然后加上 proxy_pass =>

  location /publish/ {
    auth_request /auth;

    rewrite ^/publish/([0-9]+)$ $1 break;
    proxy_pass http://10.11.2.3:$1;
    proxy_http_version 1.1;
  }

这几乎可以正常工作,只是附加了数字 uri,因为我无法在 proxy_pass url 上应用尾部斜杠。错误日志 =>

(111:连接被拒绝)连接到上游时,客户端:xx.xx.xx.xx,服务器:api.myservice.com,请求:“GET /publish/5500 HTTP/1.1”,上游:“http://10.11.2.3:55005500”

有什么想法吗?proxy_redirect?

相关内容