Есть много четких ответов на вопрос, почему следует использовать Nginx в классической трехуровневой архитектуре с приложением Gunicorn / Flask, где вы также обслуживаете статический контент.
Архитектура, которую я хочу развернуть, отличается, и я не могу найти ответа на свои сомнения, имеет ли смысл ставить Nginx перед Gunicorn в этом случае.
В моем случае у меня есть типичная серверная часть в Node.js, но когда новые данные отправляются в серверную часть, она отправляет их для асинхронной обработки в приложение Gunicorn / Flask.
Приложение Node и приложение Gunicorn / Flask находятся в двух разных контейнерах Docker и обмениваются данными через сеть докеров. Только приложение Node взаимодействует с приложением Gunicorn / Flask.
Имеет ли смысл размещать Nginx перед приложением Gunicorn / Flask, поскольку он не обслуживает статический контент и не связан с «внешним миром»?
Спасибо!
Редактировать:
Я добавляю новую информацию на основе комментария Майкла Хэмптона:
Существует также интерфейсный компонент, который обслуживается Nginx. Входящий трафик перенаправляется traefik на интерфейсный компонент или серверный компонент Node, для которого я использую pm2.
Есть две сети докеров. С одной стороны, сеть, которая используется для traefik, где, помимо traefik, подключены интерфейсный компонент и серверный компонент Node, поскольку они должны быть доступны извне. С другой стороны, есть внутренняя сеть, к которой прикреплены серверный компонент Node и приложение Gunicorn / Flask, чтобы гарантировать, что приложение Gunicorn / Flask недоступно извне.
На данный момент внутренний компонент Node отправляет запросы непосредственно через внутреннюю сеть докеров в приложение Flask через порт, на котором его обслуживает Gunicorn. Поскольку я не хочу, чтобы он был доступен извне, трафик на Gunicorn не перенаправляется через traefik.
Это хороший подход, или мне следует поставить что-то вроде Nginx перед Gunicorn в контейнере Gunicorn / Flask?