如何使用 ngix 将代理主机路径反转为绝对 URL?

如何使用 ngix 将代理主机路径反转为绝对 URL?

我有一系列本地服务都在不同的端口上运行。我想通过 nginx 反向代理公开这些服务。路由模式应遵循以下模式:

  • 0.0.0.0/app -> locahost:3000
  • 0.0.0.0/api -> locahost:3001
  • 0.0.0.0/db -> locahost:3002

我尝试了以下方法:

http {
 
    sendfile on;

    upstream app {
      server localhost:3000;
    }

    upstream api {
      server localhost:3001;
    }

    upstream db {
      server localhost:3002;
    }
 
    server {
      listen 80;
      server_name 0.0.0.0

      location / {
        proxy_pass http://app
      }

      location /api {
        proxy_pass http://api
      }

      location /db {
        proxy_pass http://db
      }
    }
}

我目前遇到的主要问题是位置被附加到最终路径,导致:

  • 0.0.0.0/db->localhost:3002/db

我猜我可以使用重写规则,但我无法正确做到这一点。

答案1

/您最后漏掉了。

    location /api {
        proxy_pass http://api/
    }

文档

如果指定了 proxy_pass 但没有指定 URI,则在处理原始请求时,请求 URI 将以与客户端发送的相同形式传递给服务器,或者在处理更改的 URI 时传递完整的规范化请求 URI

其他人也一样。

相关内容