2014-12-17 8 views
8

방금 ​​PageKit (mod_perl) 응용 프로그램을 Plack으로 변환했습니다. 이것은 이제 Apache2::Reques이 이전에 처리했을 POST_MAX/MAX_BODY를 시행 할 방법이 필요하다는 것을 의미합니다. 이 작업을 수행하는 가장 쉬운 방법은 앱 앞에 nginx를 넣는 것일 뿐이지 만 앱은 이미 HAProxy 뒤에 있으며 HAProxy로이 작업을 수행하는 방법을 알지 못합니다.요청의 전체 본문을 읽지 않고 Plack :: Middleware에서 최대 업로드 크기를 적용 할 수 있습니까?

그래서, 내 질문에 내가 요청의 몸 전체가 먼저 읽지 않고 Plack::Middleware에서 최대 몸 크기 시행에 대해 갈 수있는 방법을 입니까?

특히 파일 업로드에 관심이 있습니다. Plack::Request::Upload을 통한 크기 확인은 too late입니다.이 시점에서 전체 본문을 읽었을 것입니다. 앱은 Starman을 통해 배포되므로 psgix.streaming should be true이 배포됩니다.

답변

3

Tatsuhiko Miyagawa을 통해 Twitter을 통해 응답을 받았습니다. 그는 "Starman을 배포 할 경우 버퍼링이 실행되기 때문에 미들웨어에도 너무 늦었습니다."라고 nginx와 함께했습니다.

이것은 Starman 배치를 다루고 있기 때문에 나의 특정한 질문에 대한 대답입니다.

He also noted이 무제한 크기의 허용 업로드로 "rejecting a bigger upload before reading it on the backend could cause issues in general"

+0

아마도 많은 수 없습니다 문제. 확실히 이것이 최적의 솔루션이 될 수는 없습니까? – LeeGee

+0

나를 위해 가장 쉬운 방법입니다. 이 앱은 max_upload 크기를 적용하는 nginx 뒤에 있기 때문에 더 이상 애플 리케이션의 문제를 다루지 않는다. 응용 프로그램 수준에서 웹 서버를 사용하지 않고 max_upload 크기를 테스트 할 수 있도록 응용 프로그램 수준에서 적용 할 수 있는지 궁금해했지만, 이렇게 설정하는 것이 좋습니다. – oalders