Nginx 如何按位置路由到反向代理

Nginx How do i route to reverse proxy by location

目前我正在使用 nginx 服务器并使用 nodejs 服务器作为反向代理。 我想使 nginx 服务器 proxy_pass 根据位置不同的服务器。

所以,假设我的域是 subdomain.domain.com

加载 subdomain.domain.com/ 时,这应该提供静态文件。

加载 subdomain.domain.com/example1/req1/req2 时,这应该路由到 127.0.0.1:3000/req1/req2

加载 subdomain.domain.com/example2/req1/req2 时,这应该路由到 127.0.0.1:8080/req1/req2

但我的配置路由 subdomain.domain.com/example1/req1/req2127.0.0.1:3000/example1/req1/req2 导致错误。 (nodejs returns 无法获取 /example1)

我应该如何正确编写这个 nginx conf 文件?

尝试在位置块中使用重写指令。

类似于:

location /example1/ {
  rewrite     ^/example1/(.*)$ / break;
  proxy_pass  http://xxxxxx;
}

您可以在http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

查看rewrite模块的相关文档

您需要将以下代码片段添加到您的 nginx.conf。

    server subdomain.domain.com;
        location / {
            rewrite     ^/example1/(.*)$ / break;
            proxy_pass http://127.0.0.1:3000;
        }
    }