@awenn2015
Веб-программист самоучка

Как настроить nginx для динамического проксирования api?

Добрый день! Суть вопроса такова, есть стандартный клиент и сервер, сервер на nodejs проксируется через nginx по стандартному конфигу:

server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  # ...

  location /api {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}

Недавно появилась задача задублировать приложение которые будут брать данные из разных бд, клиент можно просто скопировать в две папки и отдавать поддоменами а вот с сервером ситуация непонятная, варианта тут два:

1) Выбирать необходимую бд в запросе проверяя от кого пришел запрос, но сложность в том что тогда нужно в каждом запросе осуществлять подключение и соответственно отключение
2) Задублировать сервер и через nginx каким то способом проксировать запрос на нужный порт в зависимости от какого под домена пришел запрос
3) Тоже самое что и во 2 пункте только сделать 2 записи проксирования в конфиге и убрать и проксированного запроса часть с уточнением для кого запрос

Не знаю как грамотно это реализовать, в голове крутится такой псевдокод

server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  # ...

  location /api/sub1 {
    # Убрать sub1, что бы запрос шел на http://localhost:2000/api
    proxy_pass http://localhost:2000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }

  location /api/sub2 {
    # Убрать sub2, что бы запрос шел на http://localhost:3000/api
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}


Если нужны какие то уточнения пишите, заранее благодарю
  • Вопрос задан
  • 379 просмотров
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Выглядит неплохо. Можно, помимо урла, разрулить это на разных доменах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы