Хобрук: Ваш путь к мастерству в программировании

Нужен ли мне обратный прокси-сервер, если я запускаю Node.js в контейнере Docker?

Я читал несколько статей, в которых рекомендуется использовать обратный прокси-сервер (например, nginx) перед приложением Node.js (например, этот: Преимущества обратного прокси перед Node.JS). Это лучше (по крайней мере, с точки зрения безопасности), чем запускать сам Node.js и раскрывать его.

Однако запуск приложения Node.JS внутри контейнера Docker должен предотвратить проблемы с безопасностью (поскольку приложение выполняется внутри контейнера и изолировано от хост-системы).

Итак, мой вопрос: есть ли преимущества использования обратного прокси-сервера при запуске приложения Node.js в контейнере Docker? И если да, то как это может улучшить мое приложение?


  • ну, в большинстве распространенных случаев Nginx используется в качестве балансировщика нагрузки и обратного прокси-сервера между Интернетом и веб-приложением. Конечно, вы можете охватить эти варианты использования с помощью решений NodeJS, но Nginx проверен в боевых условиях, и довольно часто его предпочитают работать вместе с NodeJS. 11.04.2017

Ответы:


1

Каждый раз, когда мне приходилось настраивать Nginx для прокси-сервера в контейнерах Docker, не только из-за аспекта безопасности, который, как вы упомянули, является автономным в контейнере Docker, но и для облегчения связи с распределенной системой.

В стандартной архитектуре у вас есть контейнер API, контейнер IDP и контейнер внешнего интерфейса (предположим, что это веб-приложение). Все позади Nginx. IDP, API и интерфейс подвержены внешнему трафику... но тут начинается самое интересное. Допустим, вы хотите, чтобы в другом контейнере работала дополнительная служба (служба геолокации, ETL или что-то еще). Этот контейнер не нужно выставлять на всеобщее обозрение. Только внутренние контейнеры могут говорить с ним.

В предыдущем сценарии запрос попадет на внешний интерфейс, внешний интерфейс отправит запрос (запросы) в API, API проверит токен с помощью IDP (внутренний вызов), если нет авторизации, перенаправит внешний интерфейс на IDP (трехсторонняя аутентификация). или просто верните 403 и повторите аутентификацию пользователя (двухсторонняя аутентификация), снова отправив учетные данные обратно в API. Затем, если пользователю необходимо вызвать какую-либо дополнительную службу, все вызовы будут сначала проходить через API, ИЛИ они могут быть сопоставлены в Nginx для прямого обращения к службе, просто убедитесь, что пользователь прошел аутентификацию/авторизован для использования службы.

Я надеюсь, что это проливает свет на конкретное использование Nginx. Имейте в виду, что это всего лишь «один» вариант использования, но Nginx можно использовать для многих других целей.

11.04.2017
Новые материалы

7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

Базовое руководство по переносу концепций обучения в глубокое обучение
Обзор По мере того, как машинное обучение становится все более мощным и продвинутым, модели, обеспечивающие эту расширенную возможность, становятся все больше и начинают требовать огромного..

C в C.R.U.D с использованием React-Redux
Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

5 обязательных элементов современного инструмента конвейера данных
В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..

Случай использования npm3 вместо npm2 для разработки библиотеки
Некоторое время назад я создал библиотеку на NodeJS, чтобы упростить рендеринг на стороне сервера и клиента. Он использует React и React Router для отображения соответствующего HTML на веб-сайте...

Локаджит, спасибо, что поделились этой точкой зрения.
Локаджит, спасибо, что поделились этой точкой зрения. «Вы становитесь сильными, поднимая других, а не опуская их». Мы все можем извлечь уроки из этой цитаты.

Как простая библиотека может повысить производительность вашего приложения React
Знакомство с Million.js Виртуальный DOM React не такой быстрый. Но мы не можем обойти это. Если мы хотим React, нам нужно его придерживаться, верно? Нет, есть альтернатива. Million —..