พอร์ตพร็อกซีกับพอร์ตปลายทางของ cURL
เก็บพอร์ตของบริการ HTTPS ไว้ใน URL ปลายทาง และพอร์ตของตัวกลางไว้ใน URL พร็อกซี โดยไม่เขียนทับด้วย CURLOPT_PORT
บริการ HTTPS บนพอร์ต 8443 เข้าถึงได้ผ่านพร็อกซี HTTP บนพอร์ต 8080 ตัวเลขเหล่านี้ธิบายการเชื่อมต่อที่แตกต่างกัน:
$handle = curl_init('https://api.example:8443/status');
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
แอปพลิเคชันยังคงรับผิดชอบการทำงาน การจัดการข้อผิดพลาด และวงจรชีวิตของแฮนเดิล ตัวอย่างโค้ดเก็บอินพุตการกำหนดเส้นทางไว้ด้วยกันโดยไม่เปลี่ยนการตรวจสอบใบรับรอง
cURL เชื่อมต่อกับ proxy.example:8080 ก่อน สำหรับปลายทาง HTTPS นี้ คำขออุโมงค์ระบุ api.example:8443 และตัวตน TLS ยังคงเป็น api.example
CURLOPT_PORT เป็นการเขียนทับพอร์ตปลายทาง ไม่ใช่พอร์ตของพร็อกซี การตั้งเป็น 443 ทุกครั้งที่ URL ขึ้นต้นด้วย https อาจเขียนทับบริการที่โฮสต์ไว้บน 8443 โดยเจตนา libcurl แนะนำให้เลือกพอร์ตใน URL แทนการใช้ตัวเลือกนั้น
เมื่อใช้แฮนเดิลซ้ำ ควรคำนึงถึงการเขียนทับพอร์ตอย่างชัดเจนก่อนหน้าด้วย URL ใหม่ไม่ได้ทำให้ตัวเลือกที่ขัดแย้งกันและยังคงอยู่ตีความได้ง่ายขึ้น
ตัวกลางต้องอนุญาต CONNECT ไปยังพอร์ตปลายทางที่เลือก การปฏิเสธสำหรับ 8443 ไม่ใช่เหตุผลในการย้ายตัวรับฟังของพร็อกซีหรือปิดการตรวจสอบ TLS