Puerto del proxy frente al puerto de destino en cURL
Mantenga el puerto de un servicio HTTPS en su URL de destino y el puerto del intermediario en la URL del proxy, sin sobrescribirlos mediante CURLOPT_PORT.
Se puede acceder a un servicio HTTPS en el puerto 8443 a través de un proxy HTTP en el puerto 8080. Esos números describen conexiones distintas:
$handle = curl_init('https://api.example:8443/status');
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:8080');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
La aplicación sigue siendo responsable de la ejecución, del tratamiento de errores y del ciclo de vida del identificador. El fragmento mantiene juntos los datos de enrutamiento sin cambiar la verificación del certificado.
cURL se conecta primero a proxy.example:8080. Para este destino HTTPS, la solicitud de túnel indica api.example:8443 y la identidad TLS sigue siendo api.example.
CURLOPT_PORT sobrescribe el puerto de destino, no el del proxy. Fijarlo en 443 cada vez que una URL empieza por https puede sobrescribir un servicio alojado deliberadamente en 8443. libcurl recomienda elegir el puerto en la URL en lugar de usar esa opción.
Al reutilizar un identificador, tenga en cuenta también cualquier sobrescritura explícita de puerto anterior. Una URL nueva no facilita la interpretación de opciones retenidas contradictorias.
El intermediario debe permitir CONNECT al puerto de destino elegido. Una denegación para 8443 no es motivo para mover el escucha del proxy ni desactivar la validación TLS.