Tên máy chủ của proxy chuyển tiếp bị thiếu trong yêu cầu
Yêu cầu proxy HTTP chuyển tiếp thông thường xác định đích đến, nên Host và tên máy chủ của Express không thể phân biệt các bí danh của chính proxy.
Giả sử east.proxy.example và west.proxy.example phân giải đến cùng một trình lắng nghe proxy HTTP đơn giản. Một máy khách dùng một trong hai tên có thể gửi:
GET http://www.example.org/report HTTP/1.1
Host: www.example.orgYêu cầu xác định trang web. Nó không mang bí danh proxy mà máy khách đã phân giải trước khi mở TCP. Vì vậy tên máy chủ của Express lấy từ Host không thể chọn tuyến dựa trên các tên miền con proxy đó.
Nếu bạn kiểm soát máy khách và proxy, hãy cung cấp đầu vào định tuyến rõ ràng. Với proxy triển khai nhãn X-Route:
curl --proxy http://east.proxy.example:8080 \
--proxy-header 'X-Route: east' \
https://www.example.org/--proxy-header nhắm tới giao tiếp với proxy, bao gồm CONNECT. Tiêu đề -H thông thường trên yêu cầu HTTPS nằm bên trong trao đổi HTTP được mã hóa của đích đến.
Máy chủ phải triển khai và cho phép chính sách định tuyến, sau đó dùng nhãn mà không chuyển tiếp nó tới trang web. Ngoài ra, hãy dùng điểm cuối lắng nghe hoặc tài khoản proxy được cấu hình riêng làm đầu vào định tuyến.
Với đích HTTPS, Node nhận yêu cầu đường hầm ban đầu qua sự kiện connect của máy chủ HTTP. Phần mềm trung gian yêu cầu Express thông thường không xử lý sự kiện đó. Mục tiêu CONNECT vẫn xác định máy chủ đích, không phải bí danh proxy.