2017-01-29 8 views
0

Из последних нескольких дней я работаю над тем, как реализовать API-версию с помощью NGINX.Как реализовать REST API Versioning с nodejs + NGINX?

На уровне приложения я могу реализовать, но для этого требуется 2 контроллера Diff, 2 diff route, 2 diff model и т. Д. Я не хочу этого делать.

Я хочу два разных проекта, таких как v1 и v2. Используя NGINX, если мой URL-адрес содержит v1, тогда он указывает на проект v1 и если URL-адрес содержит v2, то он укажет на проект v2 примерно так.

Я знаю, используя NGINX ALIAS или 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.conf) two 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

Я буду стараться, а затем пусть вы знаете, –