Пересылка запроса на загрузку изображения на другой сервер

Я пытаюсь создать проект NodeJS REST API, основанный на так называемой "микроархитектуре" (в основном это несколько небольших проектов NodeJS, которые могут работать полностью независимо, но в то же время работать вместе).

В настоящее время пользователи могут загружать изображения из приложения, а мой сервер NodeJS затем обрабатывает и сохраняет их соответствующим образом.

Теперь я хочу сделать следующее:

Пользователь выбирает изображение для загрузки из приложения -> Приложение отправляет запрос в конечную точку "Основной API" -> Конечная точка основного API, а затем перенаправляет этот запрос в "Службу изображений" -> После Службы изображений (которая полностью другой сервер), он должен вернуть URL-адрес, на котором хранится изображение, в конечную точку сервера Main API, которая затем вернет информацию обратно в приложение.

У меня вопрос, как переслать запрос на загрузку изображения с одного сервера на другой? В идеале я не хочу, чтобы Главный API временно сохранял изображение, а затем отправлял запрос в Службу изображений.

Я хотел бы попытаться переслать данные, которые Main API получает прямо на сервер Image Service. Я думаю, вы могли бы сказать, что я хочу "поток" данных из одного места в другое без необходимости временного хранения на диске или в памяти. Я буквально хочу, чтобы он "туннелировал" от одного сервера к другому.

Возможно ли это и эффективно ли это? Мне просто нужен 1 центральный пункт доступа к приложению, я не хочу, чтобы он знал об этом сервере Image Service. Я бы хотел, чтобы приложение только когда-либо отправляло запросы в Main API, который затем будет вызывать мои другие маленькие сервисы по мере необходимости.

Я использую NodeJS, Express, Multer (для загрузки изображений) и хостинг Digital Ocean (если это вообще что-то изменит).

1 ответ

Решение

В основном вы будете настраивать прокси-сервер, который будет напрямую передавать запросы на другую машину и обратно. Есть несколько библиотек, которые могут помочь с этим, и эта статья, в частности http://blog.vanamco.com/proxy-requests-in-node-js/, объяснит, как ее настроить, даже если они на самом деле просто пытаюсь обойти HTTPS, та же концепция применима и здесь.

Короче говоря, вы получаете файл POST для загрузки файла, а затем сразу же отправляете тот же запрос на другой сервер, а когда ответ возвращается, немедленно возвращаете его обратно во внешний интерфейс. Ваша точка входа может быть настроена как концентратор, и вы можете передавать запросы через прокси на другие серверы или даже просто обрабатывать их на том же сервере, если это необходимо.

Другие вопросы по тегам