У меня есть приложение, React для внешнего интерфейса, Node.js для внутреннего интерфейса. Приложение будет загружено в Digital Ocean, как я могу скрыть серверную часть, чтобы пользователи имели доступ только к веб-интерфейсу.
Причина, по которой вы не можете скрыть свой бэкэнд, заключается в том, что React по умолчанию использует рендеринг на стороне клиента. Это означает, что клиент использует браузер для выполнения вызовов к серверу. Есть способы сделать ваш бэкэнд безопасным, например, с помощью токена доступа или установки брандмауэра веб-приложений перед сервером. Я полагаю, что есть способы заставить ваш интерфейс реагировать на работу в качестве рендеринга на стороне сервера, но по умолчанию и как одностраничное приложение будет выполнять рендеринг на стороне клиента.
Эта статья может помочь вам понять:https://www.toptal.com/front-end/client-side-vs-server-side-pre-rendering
Если используется Docker: вы можете разделить интерфейс и бэкэнд на разные контейнеры, чтобы он мог получать доступ извне, а бэкэнд скрывался за сетью внутри Docker. Ваш веб-интерфейс будет вызывать бэкэнд по внутренней сети Docker по имени приложения.
Вы также можете скрыть интерфейс и бэкэнд, используя nginx. Используйте nginx для доступа к веб-интерфейсу в вашей докерной сети. Оказывается, доступ извне будет только к nginx.
подробнее https://docs.docker.com/compose/networking/