Programming

uwsgi 잘못된 요청 블록 크기

procodes 2020. 7. 13. 22:06
반응형

uwsgi 잘못된 요청 블록 크기


황제 모드에서 uwsgi를 실행 중입니다.

uwsgi --emperor /path/to/vassals/ --buffer-size=32768

이 오류가 발생합니다

invalid request block size: 21327 (max 4096)...skip

무엇을해야합니까 ?? 나는 또한 시도했다 -b 32768


일부 자습서를 따르는 동안 동일한 문제가 발생했습니다. 문제는 옵션 socket = 0.0.0.0:8000대신 옵션을 설정했다는 것입니다 http = 0.0.0.0:8000. socket옵션은 일부 타사 라우터 (예 : nginx)와 함께 사용되는 반면 http옵션이 설정되면 uwsgi는 들어오는 HTTP 요청을 수락하고 자체적으로 라우팅 할 수 있습니다.


올바른 해결책은 HTTP 프로토콜로 전환하지 않는 것입니다. uWSGI 설정에서 버퍼 크기를 늘리면됩니다.

buffer-size=32768

또는 명령 행 모드에서 :

-b 32768

공식 문서에서 인용 :

기본적으로 uWSGI는 각 요청의 헤더에 대해 매우 작은 버퍼 (4096 바이트)를 할당합니다. 로그에 "잘못된 요청 블록 크기"를 받기 시작하면 더 큰 버퍼가 필요할 수 있습니다. buffer-size 옵션을 사용하여 늘리십시오 (최대 65535).

로그에서 요청 블록 크기로 '21573'을 수신하면 HTTP 프로토콜을 사용하여 uwsgi 프로토콜을 말하는 인스턴스와 통신하고 있음을 의미 할 수 있습니다. 이러지 마

여기에서 : https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html


uwsgi에 --protocol = http를 추가하여 문제를 해결할 수 있습니다.


나는 nginx에서 실행하려고하는 동일한 문제에 부딪 쳤으며 여기 에서 문서를 따르고 있었습니다 . 일단 nginx로 전환하면 --socket 매개 변수에 의해 지정된 포트에서 앱에 액세스하려고하지 않고 nginx.conf의 "listen"포트에 액세스하려고 시도해야합니다. 문제가 다르게 설명되었지만 제목은 내가 가진 문제와 정확히 일치합니다.


이 오류는 uWSGI 서버가 uwsgi프로토콜을 사용 중이고 http프로토콜 curl또는 웹 브라우저 를 통해 프로토콜을 통해 직접 액세스하려고 할 때 표시됩니다. 가능하면 http프로토콜 을 사용하도록 uWSGI 서버를 구성하여 웹 브라우저 또는 curl을 통해 액세스하십시오.

변경할 수 없거나 변경하지 않으려는 경우 nginx로컬 또는 원격 uWSGI 서버 앞에 리버스 프록시를 사용할 수 있습니다 ( https://uwsgi-docs.readthedocs.org/en/latest/Nginx 참조). .html

너무 많은 일이 있다고 생각되면 uwsgi-tools파이썬 패키지를 사용해보십시오 .

$ pip install uwsgi-tools

$ uwsgi_curl 10.0.0.1:3030

uwsgi_proxy웹 브라우저 등을 통해 응용 프로그램에 액세스해야하는 경우 간단한 리버스 프록시 서버 도 있습니다. 자세한 답변 https : //.com/a/32893520/179581

참고 URL : https://stackoverflow.com/questions/15878176/uwsgi-invalid-request-block-size

반응형