cURL 프록시 포트와 목적지 포트
HTTPS 서비스의 포트는 목적지 URL에, 중계자의 포트는 프록시 URL에 두고 CURLOPT_PORT로 덮어쓰지 마세요.
포트 8443의 HTTPS 서비스는 포트 8080의 HTTP 프록시를 통해 접근할 수 있습니다. 이 숫자들은 서로 다른 연결을 나타냅니다.
$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는 목적지 포트를 덮어쓰는 옵션이며 프록시 포트가 아닙니다. URL이 https로 시작할 때마다 443으로 설정하면 8443에 의도적으로 호스팅한 서비스를 덮어쓸 수 있습니다. libcurl은 이 옵션을 쓰기보다 URL에서 포트를 고르라고 권합니다.
핸들을 재사용할 때는 이전에 명시적으로 지정한 포트 덮어쓰기도 고려하세요. 새 URL이 상충하는 잔존 옵션의 해석을 쉽게 해주지는 않습니다.
중계자는 선택한 목적지 포트로의 CONNECT를 허용해야 합니다. 8443에 대한 거부는 프록시 리스너를 옮기거나 TLS 검증을 끌 이유가 아닙니다.