Могу ли я переслать запрос http с одного узла.js или сервера python на другой сервер?
Здравствуйте, у меня есть этот вопрос, я еще не нашел ответ. Я хотел бы создать что-то вроде изображения, которое я прикрепляю.
Обычный рабочий процесс должен выглядеть примерно так:
- Клиент отправляет запрос на сервер 1;
- Сервер 1 получает запрос;
- Сервер 1 отправляет клиенту ответ 302 (перенаправление);
- Затем клиент отправляет новый http-запрос на сервер 2;
- Сервер 2 получает запрос;
- Сервер 2 отправляет 200 (нормально) ответ клиенту;
Вместо этого я хотел бы реализовать что-то вроде:
- Клиент отправляет запрос на сервер 1;
- Сервер 1 получает запрос;
- Сервер 1 направляет запрос на сервер 2;
- Сервер 2 получает запрос;
- Сервер 2 отправляет прямой ответ клиенту;
Поэтому я не хочу отправлять ответ перенаправления с сервера 1 на клиент, а затем новый запрос с клиента на сервер 2!
Можно реализовать что-то подобное с помощью node.js или, по крайней мере, с python?. Я хочу, чтобы такая архитектура ускорила мой сервис, потому что соединение сервер-сервер намного быстрее, чем соединение клиент-сервер.
2 ответа
Если вам нужно выполнить некоторую логику, прежде чем server1 выполнит запрос к server2 (например, выбрав конечную точку на сервере 2 на основе некоторого условия по запросу), вы можете использовать функцию запроса из стандартной библиотеки Node.js. http
модуль (см. документы по адресу https://nodejs.org/dist/latest-v4.x/docs/api/http.html. Но если вам не нужно выполнять какую-либо логику, то лучше использовать https://www.npmjs.com/package/http-proxy потому что вы избегаете много стандартного кода.
Вам нужно использовать прокси.
Что-то вроде https://www.npmjs.com/package/http-proxy
или вы можете использовать nginx или аналогичный перед сервером node.js в качестве прокси.
Единственное, что запросы должны возвращаться через прокси-сервер, потому что так работает tcp-соединение.