2017-01-29 107 views
0

從過去的幾天開始,我正在如何在NGINX的幫助下實現API版本控制。如何使用nodejs + NGINX實現REST API版本控制?

在應用層面上,我爲能夠實現但這需要2 DIFF控制器,2 DIFF路線,2差異模型等。我不想這樣做。

我要像V1和V2兩個不同的項目。使用NGINX,如果我的URL包含v1,那麼它指向v1項目,如果URL包含v2,那麼它將指向v2項目類似的東西。

我知道使用NGINX別名或ROOT,我們能夠做到這一點,但我不知道怎麼樣?

回答

1

事實上,我們正在談論如何配置Nginx作爲反向代理。並根據URL的內容爲不同的項目執行代理。

在你的情況,你需要:

  1. 配置sail-projects at different ports。例如:

    爲API.V1:sails.config.port - > 3010

    爲API.V2:sails.config.port - > 3020

  2. 添加到nginx的配置(nginx.conftwo upstream(例如用於nginx的和API-項目位於同一臺服務器上)。

  3. 添加到nginx配置(nginx.conf內部服務器塊)two locations爲不同的API。


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; 
    } 

} 
+0

我會努力,然後讓你知道 –