2012-03-30 4 views
4

몽구스 웹 서버를 사용하여 로컬 응용 프로그램에 프록시로 구성된 Apache를 통해 파일을 전송할 때 문제가 발생합니다.아파치는 502 mod_proxy와 대용량 파일이있는 잘못된 게이트웨이를 반환합니다.

내 설정 :

아파치 (포트 80) < -> mod_proxy를 < -> 몽구스가 mod_proxy를 포트 80에서 특정 URL을 전송하도록 구성되어

(9090 포트) localhost로 : 9090 .

몽구스는 인증 된 응답 만 허용합니다. 이것은 정상적인 (작은) 요청에는 정상적으로 작동합니다. 큰 파일 전송 그러나 아파치는 502 잘못된 게이트웨이 응답을 반환합니다.

우리 클라이언트 (.net 클라이언트는 100 개 사용 가능)가 파일 전송을 시도 할 때 파일의 내용이 직접 이어지는 헤더를 전송할 때 무슨 일이 일어나는 지에 대해 설명합니다.

몽구스는 전송 헤더를 수신하고 인증되지 않았 음을 감지하고 401 Unauthorized를 반환하고 연결을 닫습니다. 이제 아파치 (여전히 파일 전송을 받고 처리 중)가 더 이상 데이터를 전달할 수 없으며 502 불량 게이트웨이 (프록시 서버가 업스트림 서버로부터 유효하지 않은 응답을 받음)를 반환합니다.

외부 인터페이스에서 스니핑을하면 .net 클라이언트가 100 Continue를받지 않고 내용에 20 밀리 초 이내에 헤더를 보냈 음을 알 수 있습니다. 수신이 끝나면 Apache는 502를 반환합니다.

내부 인터페이스를 스니핑하면 헤더와 본문이 16384 바이트의 하나의 TCP 패킷으로 결합됩니다. Mongoose는 401로 몇 msec 이내에 응답하고 연결을 종료합니다.

아파치가 연결 종료를 감지했지만 401을 무시하고 전달하지 않습니다. 아파치가 502 대신에 401을 올바르게 전달하도록 할 수 있습니까?

현재로서는 401이 감지되면 연결에서 모든 데이터를 읽도록 애플리케이션이 변경되었지만 이것이 전체 파일을 두 번 전송하기위한 해결 방법 일뿐입니다. 파일이 수백 메가 바이트가 될 수 있으므로 시스템에 상당한 스트레스를 줄 수 있습니다.

ARM 시스템에서 Apache 2.2.9 (Debian)을 사용하고 있습니다.

답변

4

당신은 아마 여기 https://bz.apache.org/bugzilla/show_bug.cgi?id=55433

관련 링크 제기 아파치 버그가 발생하는 :

PS를 : 나는 같은 충돌했습니다 문제, 그리고 그것의 rath 어설픈 버그 (버그와 버그 자체에 관한 정보를 찾는 것). FWIW, nginx 같은 동작을 제공하지 않습니다.

+0

답변 해 주셔서 감사합니다. 나는 똑같은 문제가 있었고 실제 응답을 제공하는 Jetty는 아파치가 502로 번역 한 401로 답장을 보냈다. – ctron

+0

이 버그를 해결하는 방법 –

+0

@ d' Scribe이 버그는 2013 년 이래로보고되었으며 (그 전에 수 년 동안 존재했을 가능성이 높음) 아직 해결되지 않았습니다. 귀하의 옵션은 제한되어 있으며 다른 역방향 프록시로 전환 할 때 수렴됩니다. nginx. –

관련 문제