1) client_header_buffer_size : 일반적으로 요청되는 request에 대한 버퍼 크기 지정 2) large_client_header_buffers : 위의 용량을 오버 하는 요청에 대해 처리할 버퍼 크기 지정
- 8kb 앞에 적힌 숫자 4는 8kb 버퍼를 4개 만든다는 뜻 이다. (최대 4개까지 처리할수 있다)
ex) 우리의 경우 위 설정 중 "large_client_header_buffers" 사이즈를 오버하는 요청의 경우 에러가 발생 하였다.
- 위 이미지의 Request Header내 Cookie가 무지막지하게 긴 것을 확인 할 수 있었다.
3. 해결 방법
- 위에 서의 2가지 설정을 변경하여 수정 가능 하다.
1) client_header_buffer_size : 일반적으로 요청되는 request에 대한 버퍼 크기 지정 2) large_client_header_buffers : 위의 용량을 오버 하는 요청에 대해 처리할 버퍼 크기 지정
Case1) client_header_buffer_size 를 늘린다.
ex) client_header_buffer_size 1k; >>>> 32k
- 대부분의 요청은 32k를 넘지 않을텐데 너무 과하게 버퍼를 늘린상황이 될 수 있다. ( 서버 자원 낭비 )
- 즉 비효율적이니 권장하지 않는다.
Case2) large_client_header_buffers 를 늘린다.
ex) large_client_header_buffers 4 8k; >>>>32k
- 일반적인 요청의 헤더는 1kb 버퍼로 처리, 그것보다 큰 요청은 32k 버퍼로 처리하는 것 이므로 위의 경우보다 효율적이다.
※ 참고 Nginx 몇가지 설정 - client_body_buffer_size : 클라이언트 버퍼사이즈로 주로 FORM에서 POST액션으로 NGINX에 보내는 크기 - client_header_buffer_size : 클라이언트 헤더 버퍼사이즈 (보통 1K로 설정) - client_max_body_size : 클라이언트 요청(request)에 허용된 최대 크기. 만약 최대크기를 초과하면 nginx는 413 에러를 만듬 - large_client_header_buffers: 클라이언트 헤더 최대 개수 및 크기 - http2_max_field_size: 압축된 요청 헤더 필드의 최대 크기 제한 - http2_max_field_size: 압축 해제 후 전체 요청 헤더 목록의 최대 크기 제한