שם המארח של פרוקסי ההעברה חסר בבקשה
בקשת HTTP רגילה דרך פרוקסי העברה מזהה את היעד, לכן Host ושם המארח של Express אינם יכולים להבחין בין הכינויים של הפרוקסי עצמו.
נניח ש-east.proxy.example ו-west.proxy.example נפתרים לאותו מאזין HTTP רגיל של הפרוקסי. לקוח שמשתמש בכל אחד מהשמות יכול לשלוח:
GET http://www.example.org/report HTTP/1.1
Host: www.example.org
הבקשה מזהה את האתר. היא אינה נושאת את כינוי הפרוקסי שהלקוח פתר לפני פתיחת TCP. לכן שם המארח שנגזר מ-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 שלה עדיין מזהה את שרת היעד, לא את כינוי הפרוקסי.