nginx-클라이언트 요청 본문이 임시 파일로 버퍼링 됨 업로드되었지만 항상 위의 오류가 발생합니다. 나는이

큰 파일을 업로드하려고 할 때마다 로그 파일에 다음 오류가 발생합니다.

a client request body is buffered to a temporary file /var/lib/nginx/body/0000000001

파일이 성공적으로 업로드되었지만 항상 위의 오류가 발생합니다.

나는이 증가 client_body_buffer_size하는 1000m내가 될 업로드 최대 파일을 기대이다. 그러나 이것은 단지 추측 일 뿐이며 더 이상 오류가 발생하지 않지만 이것이 client_body_buffer_size?

누군가 가이 지시문과 사용법을 밝힐 수 있다면 고맙겠습니다.



답변

이것은 오류가 아니라 경고입니다. 그것이 [warn]로그 에 머리말이 붙은 이유 입니다.

업로드 된 파일의 크기가 업로드 용으로 예약 된 메모리 내 버퍼보다 ​​큼을 의미합니다.

지시문 client_body_buffer_size은 해당 버퍼의 크기를 제어합니다.

가끔 파일 업로드 용으로 항상 1GB의 RAM을 예약 할 수 있다면 괜찮습니다. 디스크에있는 임시 파일이 아닌 RAM에 업로드를 버퍼링하는 것이 성능 최적화입니다. 큰 업로드의 경우 몇 초가 더 걸리더라도 중요하지 않습니다. 대부분의 업로드가 작다면 아마 낭비 일 것입니다.

결국, 당신은 정말로 적절한 크기가 무엇인지에 대한 결정을 내릴 수 있습니다.


답변

NginX가 본문 내용을 임시 파일에 저장하지 않으려면 구성을 설정할 수 있습니다. 이처럼 :

    client_body_buffer_size     10M;
    client_max_body_size        10M;

이 구성을 모두 동일한 최대 값으로 설정 한 경우 size (각각 kB, MB 또는 GB의 경우 k, M 또는 G)로 NginX가 임시를 생성하지 않도록합니다. 파일.

자세한 정보 :
http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size

http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size