하나의 cURL 전송에서 로컬 인터페이스와 프록시 선택
로컬 소스에는 CURLOPT_INTERFACE를, 중개자에는 CURLOPT_PROXY를 사용하고 OS 라우팅과 NAT를 고려합니다.
여러 로컬 주소를 가진 머신은 전달 프록시로의 연결에 그중 하나가 필요할 수 있습니다. cURL은 두 선택을 모두 명시적으로 할 수 있습니다:
curl_setopt_array($handle, [
CURLOPT_URL => 'https://example.com/',
CURLOPT_INTERFACE => '192.0.2.20',
CURLOPT_PROXY => 'http://proxy.example:8080',
]);
이것은 기존 cURL 핸들에 대한 예시 구성입니다. 192.0.2.20을 PHP를 실행하는 머신에서 실제로 사용 가능한 소스 주소로 바꾸십시오. 프록시 계정 없이 허용된 공개 요청에는 HTTP 프록시 목록에서 프록시 값에 사용할 원격 리스너를 제공할 수 있습니다.
CURLOPT_INTERFACE는 나가는 연결의 로컬 측을 선택합니다. CURLOPT_PROXY는 요청을 앞으로 전달하는 중개자를 선택합니다. 로컬 소스를 선택한다고 해서 그 머신이 원격 프록시가 되거나 임의의 공인 IP가 부여되지는 않습니다.
이 경로에서 로컬 선택은 프록시로 향하는 연결에 영향을 줍니다. 웹사이트는 일반적으로 프록시의 다음 소스 주소를 봅니다. 두 쌍 중 어느 쪽 사이의 NAT도 각 수신자가 보는 주소를 더 변환할 수 있습니다.
인터페이스 선택을 생략하면 libcurl은 TCP 스택이 적절한 소스를 선택하도록 합니다. 그 선택은 머신의 네트워크 구성에 따릅니다. 구성 파일의 첫 번째 주소가 이긴다는 보편적 규칙은 없습니다.
libcurl은 지원되는 플랫폼에서 인터페이스 이름을 받아들이지만, 문서에서는 이 옵션에 대해 Windows 인터페이스 이름 선택을 제외합니다. 호스트 이름을 사용하면 차단되는 조회가 발생할 수도 있습니다. 애플리케이션이 의도하는 선택이 바로 그것일 때 알려진 로컬 주소가 더 명확한 입력입니다.