infra

Nginx에서 400 Bad Request 오류 발생 원인: Cookie 크기와 요청 헤더 크기 제한 문제

moonsiri 2025. 3. 18. 19:24
728x90
반응형

1. 배경

사이트 접속 시 400 Bad Request 오류가 발생했습니다.

특히, 쿠키 크기를 5KB 이상으로 늘린 이후 오류가 발생하여, 쿠키 크기가 영향 있을 것으로 판단하였습니다.

 

 

2. 원인

Nginx에서 client_header_buffer_size  설정을 따로 지정하지 않으면, 기본적으로 요청 헤더 크기 제한이 8KB(8192 bytes)로 설정되어, HTTP 요청의 전체 헤더 크기(Cookie, Authorization, User-Agent 등)가 8KB를 초과하면 Nginx에서 400 Bad Request를 반환하게 됩니다.

 

예를 들어, 브라우저에서 서버로 HTTP 요청을 보낼 때, 쿠키 값 외에도 다양한 헤더 값들이 함께 전송됩니다.

요청 예시:

GET /api/data HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Encoding: gzip, deflate, br
Authorization: Bearer eyJhbGciOi...
Cookie: sessionId=abc123; accessToken=xyz456; refreshToken=pqr789

각 헤더의 예상 크기를 대략 계산해 보면:

요청 헤더 종류예상 크기 (bytes)
User-Agent ~800
Accept ~200
Authorization (JWT 포함) 15002500
Cookie (총 크기) 5614
합계 7KB~8KB (위험구간)

즉, 쿠키 크기가 증가하면서 전체 요청 헤더 크기가 8KB를 초과하여 Nginx가 요청을 차단한 것입니다.

 

 

3. 해결 방법

Nginx 설정 수정 (요청 헤더 크기 제한 증가)

Nginx 설정 파일(/etc/nginx/nginx.conf 또는 /etc/nginx/conf.d/default.conf)을 수정하여 요청 헤더 크기 제한을 늘려야 합니다.

 
http {
    client_header_buffer_size 16k; // 요청 헤더 버퍼 크기를 16KB로 증가 (기본값: 1KB)
}

 

 


 

저는 모든 개발 환경에서 동일한 도메인으로 쿠키를 사용하였기 때문에, 총 쿠키 용량이 6KB를 초과하면서 해당 이슈가 발생했습니다. 하지만 쿠키 정리만 잘하면 라이브 환경에서는 발생할 가능성이 없습니다.

가장 최선의 해결책은 사용하지 않는 쿠키를 정리하여 불필요한 쿠키 데이터를 줄이는 것입니다.

728x90
반응형