Brak nazwy hosta proxy przekazującego w żądaniu
Zwykłe żądanie do przekazującego proxy HTTP identyfikuje cel, więc Host i nazwa hosta w Expressie nie mogą odróżnić aliasów samego proxy.
Załóżmy, że east.proxy.example i west.proxy.example prowadzą do tego samego prostego nasłuchu proxy HTTP. Klient używający dowolnej z tych nazw może wysłać:
GET http://www.example.org/report HTTP/1.1
Host: www.example.orgŻądanie identyfikuje witrynę. Nie przenosi aliasu proxy, który klient rozwiązał przed otwarciem TCP. Dlatego nazwa hosta w Expressie pochodząca z Host nie może wybrać trasy na podstawie tych subdomen proxy.
Jeśli kontrolujesz klienta i proxy, zapewnij jawne wejście routingu. Dla proxy implementującego etykietę X-Route:
curl --proxy http://east.proxy.example:8080 \
--proxy-header 'X-Route: east' \
https://www.example.org/--proxy-header dotyczy komunikacji z proxy, w tym CONNECT. Zwykły nagłówek -H w żądaniu HTTPS należy do zaszyfrowanej wymiany HTTP z celem.
Serwer musi wdrożyć i autoryzować politykę routingu, a następnie wykorzystać etykietę bez przekazywania jej do witryny. Alternatywnie użyj osobno skonfigurowanych punktów nasłuchu lub kont proxy jako wejść routingu.
Dla celów HTTPS Node odbiera początkowe żądanie tunelu przez zdarzenie connect swojego serwera HTTP. Zwykłe oprogramowanie pośredniczące żądań Express nie obsługuje tego zdarzenia. Cel CONNECT nadal identyfikuje serwer docelowy, a nie alias proxy.