curl 상세 출력에서 마지막으로 완료된 작업을 찾으세요. ‘프록시에 연결했지만 CONNECT 응답이 없음’은 ‘프록시 시간 초과’보다 문제 범위를 훨씬 좁혀 줍니다.

시간 제한을 둔 요청을 사용하고 로컬 예시를 자신의 HTTP 프록시로 바꾸세요. HTTP 프록시 목록에서 비교할 다른 엔드포인트를 찾을 수 있습니다.

curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/

--connect-timeout 5는 해당 조회와 핸드셰이크를 포함한 연결 설정 전체에 하나의 시간 예산을 부여합니다. 각 단계에 다섯 초씩 주는 설정이 아닙니다. --max-time 15는 연결 설정 이후 전송 시간까지 전체 작업을 제한합니다.

진행이 멈춘 위치다음으로 확인할 항목
프록시에 연결되지 않음프록시 호스트 이름 확인, 수신 대기 포트, 라우팅과 방화벽 정책.
프록시에 연결됨; 터널 응답 없음프록시 부하, 인증 협상, 접근 정책과 프록시에서 목적지로의 도달 가능성.
터널 수락됨; TLS 미완료목적지 도달 가능성, TLS 협상과 관리되는 트래픽 가로채기.
목적지 헤더 도착; 본문 멈춤원본 서버의 전송 동작, 중간 장치의 버퍼링과 애플리케이션이 의도적으로 조용한 상태인지 여부.

기본 핸드셰이크 순서는 CONNECT가 HTTPS를 전달하는 방식을 참고하세요. 연결 시간 예산 부근에서 멈추면 설정 단계, 더 늦게 전체 제한에서 멈추면 미완료 전송을 의심할 수 있습니다. 순서와 시간을 함께 보세요. 시간만으로는 구성 요소를 식별할 수 없습니다. 로그 문구는 curl 빌드마다 다르며, TCP 포트가 열려 있어도 CONNECT 작동을 입증하지는 못합니다.

한쪽 조건 고정하기

허용된 직접 경로로 같은 목적지에 접근해 비교하세요.

curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/

그런 다음 같은 프록시를 통해 다른 무해한 목적지를 비교하세요. 하나만 실패하면 그 경로나 목적지 정책을 조사하세요. 모두 같은 연결 설정 단계에서 멈추면 공통 프록시 경로를 조사하세요. 시작 시각, 엔드포인트, 목적지와 마지막 완료 단계를 저장하고, 로그 공유 전에 자격 증명, 토큰, 쿠키와 비공개 이름을 제거하세요.

연결은 열려 있지만 유용한 진행이 없을 때

파일 전송에는 설정 및 전체 시간 제한 외에 저속 제한이 필요할 수 있습니다.

curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 60 --speed-limit 100 --speed-time 20 https://example.com/

이 설정은 지속 전송률이 20초 동안 초당 100바이트 미만이면 중단하며, 전체 상한도 60초로 유지합니다. 작업 부하에 맞춰 값을 선택하세요. 이벤트 스트림은 오랫동안 조용해도 정상일 수 있어 다운로드 규칙으로 잘못 중단될 수 있습니다.

모든 제한을 늘리면 증상이 늦게 나타날 뿐입니다. 즉시 반복해서 재시도하면 과부하 경로에 연결이 추가될 수 있습니다. 몇 번의 계획된 비교로 진단하세요. 이후 애플리케이션의 재시도 정책에는 별도의 총 시간 예산과 작업 반복의 안전성 검토가 필요합니다.

관련 글