Пусть у меня фронт на одном сервере, бэк на другом. Как бы мне это корректно организовать?

У меня есть два варианта реализации веб-приложения:

  1. Есть сервер, где работает бэкенд. Отдельно есть сервер, где лежит фронт. При этом, этот сервер, где фронт, он, как бы, просто хостит дист джаваскриптового приложения как статику. Я имею в виду, что там нет никакого серверного кода. Пусть это будет какой-нибудь nginx например. Само джавоскриптовое приложение ходит на сервер бека за данными. На сервере бека настроены Cors. Короче говоря, хостимся на одном хосте, а за данными ходим на другой. Прям из браузера.

  2. Второй вариант подразумевает тоже два сервера. Но во втором варианте запросы с фронта идут на сервер фронта, который в свою очередь проксирует все на сервер бека.

Прошу описать, какие преимущества/недостатки есть у того и другого подхода.


Ответы (1 шт):

Автор решения: S.H.

Я бы рискнул сказать, что второй подход в плане применения является доминирующим. Его преимущества: Он очен прост. Проксирование настраивается в nginx довольно элементарно. Кроме того, Вы сразу получаете кеширование GET - запросов и кучу других плюшек, в котрых nginx действительно хорош - таких, как SSL - сертификаты на фронте, сжатие трафика на фронте и т.п. При этом бэк может быть очень "глупым" и не бояться этого: плохие запросы от злобных хакеров к нему всё равно не придут, фронт отфильтрует. А в ряде случаев фронт прячут ещё и за клоудфлером каким нибудь.

Собственно, единственным преимуществом перврго подхода можно назвать относительную - относительную! - независимость фронта и бэка. Всё остальное при таком подходе - это исчезновение тех преимуществ, которые я описал в первом параграфе.

Как говорил Иа-Иа - "по моему, так". Еще кто то что то добавит?

→ Ссылка