TCP 연결 성공 후 프록시 CONNECT 타임아웃
TCP 연결이 완료되었다고 해서 터널 설정까지 끝났다고 가정하지 말고, CONNECT 중에 활성화된 타임아웃을 찾으세요.
TCP 연결 타임아웃은 클라이언트가 프록시에 연결되는 순간 제 역할을 마쳤습니다. 그다음 기다림—완전한 CONNECT 응답 수신—은 다른 타이머가 관장할 수 있습니다.
프록시가 아직 업스트림에 연결 중이거나 인증 메시지를 교환 중이거나 다른 서비스를 기다리고 있을 수 있습니다. 웹사이트의 일반 응답은 아직 시작되지 않았습니다.
| 마지막으로 완료된 단계 | 아직 무엇을 기다리는가? |
|---|---|
| 프록시에 TCP 연결됨 | CONNECT 수락을 포함한 프록시 핸드셰이크 |
| CONNECT 수락됨 | 대상이 사용하는 경우 목적지 TLS |
| 목적지 요청 전송됨 | 목적지의 응답 |
커넥터가 그 핸드셰이크를 읽고 쓰는 동안 활성화된 타이머를 찾으세요. “response timeout”이라는 속성은 경로가 설정된 뒤에야 효력을 발휘할 수 있습니다. HttpClient 5에서는 ConnectionConfig와 그 소켓 타임아웃, TLS 핸드셰이크 구성, 요청 수준의 응답 타임아웃을 구분하세요. 관련 연결 구성을 실제 클라이언트가 사용하는 관리자를 통해 적용하세요. 오래된 Apache HttpClient 세대는 다른 API를 사용하므로, 오래된 스니펫은 이런 책임들의 신뢰할 만한 지도가 아닙니다.
최종 CONNECT 거부는 프록시의 응답으로 유지하세요. 성공 응답 뒤에 TLS가 멈추는 것은 또 다른 실패 단계입니다. “TCP 연결됨; 설정 기한 전에 완전한 CONNECT 응답 없음”이라는 표현이 일반적인 프록시 타임아웃보다 문제를 더 정확히 설명합니다.
전체 기한은 이런 단계별 한도와 함께 호출자의 대기를 제한할 수 있습니다. 기한이 만료되면 다음 시도가 연결 용량을 소비하기 전에 클라이언트가 지원하는 수명 주기를 통해 작업을 취소하거나 닫으세요.