피드로 돌아가기
Node.js 10.15.0 (LTS)
Node.js BlogNode.js Blog
Backend

Node.js 10.15.0이 HTTP 파서의 헤더 크기 제한을 CLI 플래그로 조정 가능하게 변경해 10.14.0의 회귀 버그 해결

Node.js 10.15.0 (LTS)

2018년 12월 26일3intermediate

Context

Node.js 10.14.0의 보안 릴리스에서 HTTP 바이너리 업그레이드 응답 본문에서 예상치 못한 동작 회귀가 발생했다. HTTP 파서의 최대 헤더 크기를 조정할 수 있는 CLI 플래그가 누락되어 있었다.

Technical Solution

  • --max-http-header-size 플래그 추가: Node.js 프로세스 시작 시 HTTP 파서의 최대 헤더 크기를 CLI 인수로 조정 가능하도록 변경
  • http 모듈에 maxHeaderSize 속성 추가: JavaScript 런타임 레벨에서 HTTP 헤더 크기 제한값 설정 지원
  • http_parser_set_max_header_size 함수 도입: C++ 의존성(deps)에서 헤더 크기 제한 설정 로직 cherry-pick
  • 바이너리 업그레이드 응답 본문 회귀 버그 수정: Matteo Collina가 작성한 패치로 HTTP 업그레이드 시 응답 본문 처리 복구
  • kUInteger 파싱 추가: 정수 옵션 파싱을 위한 네이티브 C++ 구현 추가

Key Takeaway

릴리스 라인의 회귀 버그는 신속한 포인트 릴리스(10.15.0)로 대응하되, 단순 버그 수정을 넘어 누락된 기능(헤더 크기 조정 옵션)을 함께 추가하여 운영 유연성을 확보했다.


Node.js 기반 서버 운영팀에서 대용량 HTTP 헤더를 처리해야 하는 경우, Node.js

1

0.

1

5.0 이상으로 업그레이드한 후 --max-http-header-size 플래그를 사용하여 요청마다 프로세스를 재시작하지 않고도 헤더 제한값을 동적으로 조정할 수 있다.

원문 읽기