Прокси¶
Node.js сервер, как и любой другой веб-сервер, может выступать в качестве прокси для всех или только части запросов. Для проксирования запросов через сервер Node.js, работающий в связке с фреймворком Express, используется npm модуль express-http-proxy.
1 | |
В самом простом использовании модуля express-http-proxy прокси выглядит следующим образом.
1 2 3 | |
Здесь все запросы к маршрутам, начинающимся с /api будут перенаправлены на http://example.com.
Вторым параметром функции промежуточной обработки express-http-proxy можно передать объект конфигурации со следующими свойствами:
filter - определяет, какие запросы должны быть проксированы, и принимает функцию, возвращающую булевое значение (если true - запрос проксируется);
1 2 3 4 5 6 7 | |
userResDecorator - используется для модификации объекта ответа перед его отдачей клиенту;
1 2 3 4 5 6 7 8 9 10 | |
userResHeaderDecorator - используется для модификации заголовков ответа;
1 2 3 4 5 6 7 8 9 | |
proxyReqPathResolver - используется для модификации пути запроса (путем считается все, что следует после хоста);
1 2 3 4 5 6 7 8 9 | |
proxyReqOptDecorator - предназначен для модификации параметров объекта запроса (заголовков, HTTP метода, параметров адресной строки и т. д.);
1 2 3 4 5 6 7 8 9 | |
proxyReqBodyDecorator - используется для модификации тела запроса;
1 2 3 4 5 6 7 8 9 | |
proxyErrorHandler - предназначен для задания пользовательского поведения при возникновении ошибки (по умолчанию транслирует ошибку клиенту);
1 2 3 4 5 6 7 8 | |
parseReqBody - булевое значение, если true - парсит тело запроса, если false - у объекта запроса не будет свойства body, рекомендуется отключать из соображений эффективности при передаче бинарных данных (по умолчанию true);
limit - устанавливает ограничение на размеры тела запроса (по умолчанию 1Мб), если размеры будут превышены - ответ вернется с 413 статусом;
1 2 3 4 5 6 | |
memozieHost - булевое значение, если true - то первый параметр (адрес, куда проксируются запросы), будет разбираться при каждом запросе, если false - то только при первом и полученное значение будет использоваться в дальнейшем для всех поступающих запросов (по умолчанию true);
https - булевое значение, если true - запрос будет принудительно проксирован с использованием протокола https (по умолчанию протокол прокси совпадает с протоколом, указанным в заголовке Host);
preserveHostHdr - булевое значение, если true - сохраняет в качестве HTTP заголовка Host значение клиента;
timeout - устанавливает в миллисекундах время ожидания от сервера, на который перенаправляется запрос, по истечении заданного времени ответ вернется с 504 статусом.
1 2 3 4 5 6 | |