Името на хоста на предния прокси липсва в заявката
Обикновената HTTP заявка през преден прокси идентифицира дестинацията, затова Host и hostname на Express не могат да различат псевдонимите на самия прокси.
Да предположим, че east.proxy.example и west.proxy.example се разрешават до един и същ обикновен HTTP слушател на прокси. Клиент, който използва което и да е от имената, може да изпрати:
GET http://www.example.org/report HTTP/1.1
Host: www.example.org
Заявката идентифицира уебсайта. Тя не носи псевдонима на проксито, който клиентът е разрешил преди отварянето на TCP. Следователно hostname, получен от Host в Express, не може да избере маршрут въз основа на тези поддомейни на проксито.
Ако контролирате клиента и проксито, осигурете явен вход за маршрутизиране. За прокси, което реализира етикет X-Route:
curl --proxy http://east.proxy.example:8080 \
--proxy-header 'X-Route: east' \
https://www.example.org/
--proxy-header насочва комуникацията с проксито, включително CONNECT. Обикновен хедър -H в HTTPS заявката принадлежи вътре в криптирания HTTP обмен на дестинацията.
Сървърът трябва да реализира и разреши политиката за маршрутизиране, след което да използва етикета, без да го препраща към уебсайта. Като алтернатива използвайте отделно конфигурирани крайни точки за слушане или прокси акаунти като вход за маршрутизиране.
За HTTPS дестинации Node получава първоначалната заявка за тунел чрез събитието connect на своя HTTP сървър. Обикновеният междинен софтуер за заявки на Express не обработва това събитие. Неговата CONNECT цел все още идентифицира сървъра на дестинацията, а не псевдонима на проксито.