본문 바로가기

nginx 1.29.7부터 업스트림 keepalive가 기본

조회 0 · 댓글 0
스벅오늘의커피스벅오늘의커피작성자2026년 9월 14일

리버스 프록시로 백엔드에 요청을 넘길 때, nginx가 매 요청마다 백엔드와 TCP 커넥션을 새로 맺고 끊는 상황을 본 적 있을 겁니다. 오래 알려진 원인은 nginx가 업스트림으로는 HTTP/1.0으로 붙어서 keepalive가 안 됐기 때문입니다. 그래서 예전엔 upstream 블록에 keepalive를 켜는 것만으로는 부족하고, location에 proxy_http_version 1.1proxy_set_header Connection ""까지 같이 넣어야 커넥션이 재사용됐습니다. 이 세 줄 중 하나라도 빠지면 백엔드가 응답 후 커넥션을 닫아버립니다.

공식 문서에 따르면 nginx 1.29.7(2026년 3월)부터 이게 바뀌었습니다. 업스트림 keepalive가 기본으로 켜지고(워커당 keepalive 32 local), proxy_http_version도 기본이 1.1이 됐습니다. 즉 신버전에서는 아래 주석 처리한 두 줄이 더 이상 필요 없습니다.

upstream http_backend {
    server 127.0.0.1:8080;
    keepalive 16;
}

server {
    location /http/ {
        proxy_pass http://http_backend;
        # proxy_http_version 1.1;      # 1.29.7 이전에만 필요
        # proxy_set_header Connection "";  # 1.29.7 이전에만 필요
    }
}

참고로 관련 기본값은 keepalive_requests 1000, keepalive_timeout 60s, keepalive_time 1h입니다. 주의할 점은 자기 nginx 버전을 nginx -v로 먼저 확인하는 겁니다. 1.29.7 미만이면 여전히 위 두 줄이 있어야 keepalive가 동작하니 무작정 지우진 마세요.

🔗 https://nginx.org/en/docs/http/ngx_http_upstream_module.html

🔗 https://blog.nginx.org/blog/keep-alive-to-upstreams-is-now-default-in-nginx-1-29-7

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