Ім'я хоста прямого проксі відсутнє в запиті
Звичайний запит до прямого HTTP-проксі визначає призначення, тому Host і ім'я хоста в Express не можуть розрізнити псевдоніми самого проксі.
Припустімо, що east.proxy.example і west.proxy.example вказують на один і той самий простий HTTP-прослуховувач проксі. Клієнт, який використовує будь-яке з цих імен, може надіслати:
GET http://www.example.org/report HTTP/1.1
Host: www.example.orgЗапит ідентифікує веб-сайт. Він не містить псевдонім проксі, який клієнт розв'язав перед відкриттям TCP. Тому ім'я хоста Express, похідне від Host, не може вибрати маршрут на основі цих піддоменів проксі.
Якщо ви контролюєте клієнт і проксі, надайте явний вхід маршрутизації. Для проксі, що реалізує мітку 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 усе ще визначає сервер призначення, а не псевдонім проксі.