본문 바로가기
삵

nginx 버퍼를 늘려도 특정 사용자만 400 Bad Request가 납니다

조회 0 · 댓글 0
영영웅문작성자2026년 10월 19일

사내 포털을 nginx 뒤 스프링부트(3.2, embedded Tomcat 10.1, JDK 17)로 운영하고 있습니다. 평소엔 멀쩡한데 SSO 연동을 붙인 뒤부터 일부 사용자만 로그인 직후 간헐적으로 400 Bad Request를 받습니다. 브라우저에는 짧은 "Bad Request" 화면만 뜨고, 같은 계정도 시크릿 창에서는 정상적으로 들어가집니다.

nginx access 로그에는 해당 요청이 400으로 찍혀 있는데 error 로그에는 아무것도 안 남습니다. 그래서 nginx 쪽 헤더 버퍼부터 늘려봤습니다.

large_client_header_buffers 4 32k;
client_header_buffer_size 16k;

그래도 동일한 사용자들은 계속 400을 받습니다. 톰캣 로그를 debug로 올려서 보니 이런 스택이 찍힙니다.

java.lang.IllegalArgumentException: Request header is too large
    at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:802)
    at org.apache.coyote.http11.Http11InputBuffer.parseHeader(Http11InputBuffer.java:501)
    at org.apache.coyote.http11.Http11InputBuffer.parseHeaders(Http11InputBuffer.java:...)

문제가 나는 사용자들은 공통적으로 브라우저에 쿠키가 많이 쌓여 있거나, 속한 그룹이 많아 인증 토큰이 긴 편입니다. 쿠키를 전부 지우면 한동안은 괜찮아집니다. nginx에서 버퍼를 키워도 톰캣이 거부하는 것 같은데, 스프링부트처럼 server.xml이 따로 없는 embedded Tomcat 구조에서 이 한계를 올리는 설정이 어디에 있는지 궁금합니다. nginx와 톰캣 양쪽을 다 맞춰줘야 하는 건지도 알고 싶습니다.

로그인 후 답글을 남길 수 있습니다.