все зависит от вашего приложение, возможно несколько вариантов:
если ваше приложение умеет раздавать и кешировать статику, обрабатывать роуты самостоятельно, то без нжинкса можно обойтись
если у вас приложение монолитное и версия фронтенда жестко зависит от версии бекенда, то желательно деплоить службу с двумя контейнерами: нжинкс и бекенд. А порт нжинкса уже мапить в балансировщик
если приложение не монолитное, то можно распилить фронт и бек по разным сервисам и эндпоинтам, тогда будет удобно скейлить нагрузку.