Numele de gazdă al proxy-ului de redirecționare lipsește din cerere
O cerere obișnuită către un proxy HTTP de redirecționare identifică destinația, așa că Host și numele de gazdă din Express nu pot distinge aliasurile proxy-ului însuși.
Presupunem că east.proxy.example și west.proxy.example indică același ascultător proxy HTTP simplu. Un client care folosește oricare dintre nume poate trimite:
GET http://www.example.org/report HTTP/1.1
Host: www.example.orgCererea identifică site-ul web. Nu transportă aliasul proxy-ului pe care clientul l-a rezolvat înainte de a deschide TCP. Prin urmare, numele de gazdă din Express derivat din Host nu poate alege o rută pe baza acelor subdomenii ale proxy-ului.
Dacă controlați clientul și proxy-ul, furnizați o intrare explicită de rutare. Pentru un proxy care implementează o etichetă X-Route:
curl --proxy http://east.proxy.example:8080 \
--proxy-header 'X-Route: east' \
https://www.example.org/--proxy-header vizează comunicarea cu proxy-ul, inclusiv CONNECT. Un antet -H obișnuit pe cererea HTTPS aparține schimbului HTTP criptat al destinației.
Serverul trebuie să implementeze și să autorizeze politica de rutare, apoi să consume eticheta fără a o transmite site-ului web. Alternativ, folosiți puncte de ascultare sau conturi de proxy configurate separat ca intrări de rutare.
Pentru destinațiile HTTPS, Node primește cererea inițială de tunel prin evenimentul connect al serverului său HTTP. Middleware-ul obișnuit de cereri Express nu gestionează acel eveniment. Ținta CONNECT identifică în continuare serverul de destinație, nu aliasul proxy-ului.