0

从过去的几天开始,我正在研究如何在 NGINX 的帮助下实现 API 版本控制。

在应用程序级别,我能够实现但这需要 2 个 Diff 控制器、2 个 diff 路由、2 个 diff 模型等。我不想那样做。

我想要两个不同的项目,比如 v1 和 v2。使用 NGINX,如果我的 URL 包含 v1,那么它指向 v1 项目,如果 URL 包含 v2,那么它将指向 v2 项目类似的东西。

我知道使用 NGINX ALIAS 或 ROOT 我们可以做到这一点,但我不知道怎么做?

4

1 回答 1

2

其实我们说的就是如何将nginx配置为反向代理。并根据 URL 的内容为不同的项目做代理。

在您的情况下,您需要:

  1. 在不同的端口配置sails-projects。例如:

    对于 API.V1:sails.config.port-> 3010

    对于 API.V2:sails.config.port-> 3020

  2. 添加到 nginx 配置 ( nginx.conf)两个上游(例如,位于同一服务器上的 nginx 和 api-projects)。

  3. 为不同的 api添加两个位置到 nginx 配置(nginx.conf在服务器块内) 。


Nginx 配置可能如下所示:

upstream api_v1 {  
  server 127.0.0.1:3010;
  keepalive 64;
}

upstream api_v2 {  
  server 127.0.0.1:3020;
  keepalive 64;
}

server {  
  listen        80;
  server_name   example.com;

  location /api/v1 {
    proxy_pass                          http://api_v1;
    proxy_http_version                  1.1;
    proxy_set_header  Connection        "";
    proxy_set_header  Host              $host;
    proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header  X-Real-IP         $remote_addr;
  }

  location /api/v2 {
    proxy_pass                          http://api_v2;
    proxy_http_version                  1.1;
    proxy_set_header  Connection        "";
    proxy_set_header  Host              $host;
    proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header  X-Real-IP         $remote_addr;
  }

}
于 2017-01-29T08:52:38.547 回答