불완전한 응답을 보내는 nginx

불완전한 응답을 보내는 nginx

구성을 다시 시작하거나 수정하지 않으면 nginx가 때때로 불완전한 응답을 보냅니다. 오늘은 재현이 잘 됐는데 아직도 무엇이 문제인지, 어떻게 고쳐야 할지 모르겠습니다.

nginx가 사용하도록 구성된 사이트의 위치/별칭 경로에 5MB 파일을 넣었습니다. php5-fpm, 모듈 등은 없습니다. 정적 파일을 제공하기 위한 nginx만 있습니다.

테스트할 때 서버에 액세스하는 다른 사용자는 없으며 내 테스트 요청 외에는 http 액세스도 없습니다.

다운로드가 실패하고 Google Chrome은 트래픽 로그에 2개의 요청이 있다고 표시합니다. 하지만 다운로드에 대한 http URL을 한 번만 입력했고 리디렉션이나 직접 시작한 다른 두 번째 요청은 없었습니다.

서버의 access.log에서도 동일한 문제가 발생합니다.

테스트1

[14/May/2014:14:06:53 +0200] "GET /dev/test_test.m4v HTTP/1.1" 206 1 "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like 게코) 크롬/32.0.1700.107 사파리/537.36"

[14/5월/2014:14:06:53 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 130680 "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like 게코)Chrome/32.0.1700.10

[14/May/2014:14:07:15 +0200] "GET /dev/test_test.m4v HTTP/1.1" 206 1 "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like 게코) 크롬/32.0.1700.107 사파리/537.36"

[14/May/2014:14:07:15 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 114684 "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like 게코)Chrome/32.0.1700.10

응답 크기가 1인 요청이 항상 하나 있고 크기가 혼합되어 있지만 1보다 큰 요청이 있다는 것을 알 수 있습니다. 그러나 브라우저의 결과는 항상 동일합니다. => 응답이 깨져서 다운로드에 실패했습니다.

확인하기 위해 http 상태/응답 206과 관련이 없으므로 max_ranges 0;구성에 추가하고 다시 시도 -> test2를 수행합니다.

테스트2

[14/5월/2014:14:11:36 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 152460 "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like 게코) 크롬/32.0.1700.107 사파리/537.36"

[14/May/2014:14:11:38 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 142296 "-" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like 게코) 크롬/32.0.1700.107 사파리/537.36"

브라우저에서도 동일한 결과가 나타납니다. 다운로드/요청이 항상 실패하고 access.log의 크기가 임의 청크 또는 응답 크기와 같이 항상 다릅니다.

서버 상태: iowait, RAM, CPU가 거의 유휴 상태입니다. 높은 부하나 제한이 없습니다.

이것은 알려진 문제이거나 버그입니까, 아니면 이 문제를 해결하는 방법을 알고 있습니까?

답변1

이와 같이 간단한 시나리오를 사용하면 nginx 서버 앞에 방화벽, IDS/IPS 장치 또는 기타 장치가 다운로드를 방해하고 있다고 확신합니다. 확실하지 않은 경우 ISP에 문의하세요.

관련 정보