Задать вопрос
@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;
  }
}


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

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

Похожие вопросы