TCP 클라이언트는 요청 전송을 마친 뒤 응답을 계속 기다리면서 쓰기 측을 닫을 수 있습니다. 작은 원시 TCP 테스트를 HTTP 클라이언트와 비교할 때 이 상태에 대한 Squid의 정책이 중요합니다.

Squid 7의 문서화된 기본값은 다음과 같습니다.

half_closed_clients off

이 정책에서는 읽기가 더 이상 들어오는 데이터가 없다고 보고하면 Squid가 클라이언트 연결을 닫습니다. 옵션을 켜면 읽기나 쓰기에서 오류가 발생할 때까지 연결을 유지할 수 있습니다. 문서는 일반적인 포워드 프록시 운영에는 기본 off 정책을 권장합니다.

테스트 클라이언트가 입력 종료를 알리는 시점을 기록하세요. stdin EOF에 도달하는 파이프라인은 응답을 읽으면서 전송 측을 열어 두는 클라이언트와 다르게 동작할 수 있습니다. 둘 다 같은 HTTP 요청 바이트를 보냈더라도 마찬가지입니다.

테스트 클라이언트가 완전히 종료되면 그 뒤에 도착하는 응답을 읽을 수 없습니다. 서버 측 하프 클로즈 설정으로 그 클라이언트 프로세스의 수명을 바꿀 수는 없습니다.

의도한 테스트에 맞춰 클라이언트의 EOF 동작과 프록시 정책을 함께 선택하세요. 하프 클로즈 정책은 유효한 프레이밍을 가진 HTTP 메시지도 전제로 합니다. 빠진 요청 본문을 제공하지 않고 불완전한 헤더 블록을 고치지도 않습니다.

관련 글