Nama host proxy maju tidak ada dalam permintaan
Permintaan HTTP biasa melalui proxy maju mengidentifikasi tujuan, sehingga Host dan hostname Express tidak dapat membedakan alias proxy itu sendiri.
Misalkan east.proxy.example dan west.proxy.example mengarah ke pendengar HTTP biasa yang sama pada proxy. Klien yang memakai salah satu nama itu dapat mengirim:
GET http://www.example.org/report HTTP/1.1
Host: www.example.org
Permintaan itu mengidentifikasi situs web. Permintaan tidak membawa alias proxy yang diresolusikan klien sebelum membuka TCP. Karena itu hostname turunan Host di Express tidak dapat memilih rute berdasarkan subdomain proxy tersebut.
Jika Anda mengendalikan klien dan proxy, sediakan masukan perutean yang eksplisit. Untuk proxy yang menerapkan label X-Route:
curl --proxy http://east.proxy.example:8080 \
--proxy-header 'X-Route: east' \
https://www.example.org/
--proxy-header menargetkan komunikasi dengan proxy, termasuk CONNECT. Header -H biasa pada permintaan HTTPS berada di dalam pertukaran HTTP terenkripsi tujuan.
Server harus menerapkan dan mengesahkan kebijakan perutean, lalu memakai label itu tanpa meneruskannya ke situs web. Sebagai alternatif, gunakan titik akhir pendengar atau akun proxy yang dikonfigurasi terpisah sebagai masukan perutean.
Untuk tujuan HTTPS, Node menerima permintaan terowongan awal melalui peristiwa connect server HTTP-nya. Middleware permintaan Express biasa tidak menangani peristiwa itu. Target CONNECT-nya tetap mengidentifikasi server tujuan, bukan alias proxy.