Porta do proxy e porta de destino no cURL
Mantenha a porta de um serviço HTTPS no URL de destino e a porta do intermediário no URL do proxy, sem substituí-las por CURLOPT_PORT.
Um serviço HTTPS na porta 8443 pode ser alcançado por um proxy HTTP na porta 8080. Esses números descrevem conexões diferentes:
$handle = curl_init('https://api.example:8443/status');
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
A aplicação continua responsável pela execução, pelo tratamento de erros e pelo ciclo de vida do handle. O trecho mantém os dados de roteamento juntos sem alterar a verificação do certificado.
O cURL conecta-se primeiro a proxy.example:8080. Para este destino HTTPS, o pedido de túnel indica api.example:8443, e a identidade TLS permanece api.example.
CURLOPT_PORT substitui a porta de destino, não a porta do proxy. Defini-lo como 443 sempre que um URL começa por https pode substituir um serviço hospedado deliberadamente na 8443. O libcurl recomenda escolher a porta no URL em vez de usar essa opção.
Ao reutilizar um handle, considere também qualquer substituição explícita de porta anterior. Um novo URL não torna mais fácil interpretar opções retidas e contraditórias.
O intermediário deve permitir CONNECT para a porta de destino escolhida. Uma recusa para a 8443 não é motivo para mover o listener do proxy nem desativar a validação TLS.