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.org

Cererea 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.

Articole similare