נניח ש-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 שלה עדיין מזהה את שרת היעד, לא את כינוי הפרוקסי.

מאמרים קשורים