Как задеплоить бэк и фронт на одном сервере?

здравствуйте, я уже так запарился я уже непонимаю что мне делать,
помогите пожалуйста,
мне нужно задеплоить фронт написанный на vue и бэк на node express
в итоге нужно что бы фронт был доступен по адресу https://example.com
а бэк по адресу https://api.example.com
я уже установил nginx, pm2 скачал свой репозиторий настроил ssh ключ
но как настроить nginx под все это я не знаю, я хочу что бы все работало через один файл ecosystem.js но это не обязательно,
я это вижу так что нужно каким то образом транслировать localhost:3000 на бэк то есть api.example.com
а localhost:8080 на фронт то есть example.com,
домен и поддомен я уже зарегистрировал и связал,
умоляю помогите а то я уже 3 дня к ряду пытаюсь это сделать и ничего не получается
  • Вопрос задан
  • 450 просмотров
Решения вопроса 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Всё в рамках стандартной конфигурации с проксированием. Делаете два серверных блока, разводите по разным портам в proxy_pass.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Karpion
В зависимости от того, откуда д.б. доступны фронт и бэк, можно придумать разные решения.

Проще всего разнести фронт и бэк по разным IP-адресам, благо из пула 127.*.*.* их можно брать более чем достаточно. И дальше надо запустить два экземпляра Ngnix на этих адресах. А каждый адрес прописать в DNS в соответствующей зоне.
Если же фронт и бэк д.б. доступны извне, со всего мира - для этой схемы надо иметь несколько IP-адресов.

Можно разнести фронт и бэк по разным портам. Тогда в DNS оба имени должны указывать на один IP-адрес, а порт д.б. прописан в URL.

И наконец, можно сделать DNS-based вирт.хосты (вирт.сайты) внутри одного Ngnix. В DNS оба имени должны указывать на один IP-адрес.

PS: А ещё фронт и бэк можно засунуть в разные вирт.машины, и это будет как будто они на разных компьютерах.
Ответ написан
Ваш ответ на вопрос

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

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