Nginx反向代理到两个服务

时间:2019-12-27 18:25:08

标签: nginx

我正在运行nodeJS脚本。

  • localhost:9001
  • 它在nginx反向代理后面运行
  • 它以/v{{ version }}/{{ lang }}/...的形式接受请求

例如:

  • domain.com/api/v1/en/news
  • domain.com/api/v2/fr/news
  • domain.com/api/v3/en/news

直到现在我有了这是nginx

  location /api/ {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://localhost:9001/;
  }

一切正常。

我现在的目标是在localhost:9002上运行其他(相同)脚本,该脚本将接受v4请求。 v3

仍将对v2v1localhost:9001进行“处理”

所以我希望将请求domain.com/api/v4/en/news路由到localhost:9002

我将此当前规则置于之上

location ~* /api/v4/(.*)$ {
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   Host      $http_host;
  proxy_pass         http://localhost:9002/v4/$1;
}

location /api/ {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://localhost:9001/;
  }

请求/v3/..被路由到localhost:9001(如预期的那样),但是/v4/..返回502

有指针吗?

1 个答案:

答案 0 :(得分:1)

location /api/v4/ {
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   Host      $http_host;
  proxy_pass         http://localhost:9002/v4/;
}

location /api/ {
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   Host      $http_host;
  proxy_pass         http://localhost:9001/;
}