Пересылка запроса на загрузку изображения на другой сервер
Я пытаюсь создать проект 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 для загрузки файла, а затем сразу же отправляете тот же запрос на другой сервер, а когда ответ возвращается, немедленно возвращаете его обратно во внешний интерфейс. Ваша точка входа может быть настроена как концентратор, и вы можете передавать запросы через прокси на другие серверы или даже просто обрабатывать их на том же сервере, если это необходимо.