Порт проксі та порт призначення в 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.