본문 바로가기
스터디/JAVA

[Nginx] Server Keepalive와 Upstream Keepalive

by zoodi 2025. 1. 26.
728x90

목차

     

     

     

    1. Server Keepalive

    • 클라이언트와 nginx 간의 연결
    • HTTP, Server 또는 Location block 내에서 keepalive_timeout, keepalive_requests 설정을 사용
    • 클라이언트와 nginx 간의 http 연결을 일정 시간 동안 유지해, 새로운 요청 시 재연결을 방지
    • 주요 설정
      • keepalive_timeout
        • 클라이언트와 nginx 간의 연결을 유지할 최대 시간
        • 기본값: 75s
      • keepalive_requests
        • 동일한 연결에서 처리할 최대 요청 수를 제한
        • 기본값: 100
    • 예시 코드
     
    keepalive_timeout 60s;
    keepalive_requests 1000;

     

    2. Upstream Keepalive

    • nginx와 백엔드(ex: application server) 간의 연결
    • upstream block 내에서 keepalive 사용
    • nginx 와 백엔드 서버 간의 연결을 풀로 관리하며, 새로운 연결을 매번 생성하지 않고 재사용 가능하도록 함으로써 백엔드 서버의 부하를 줄인다.
    • 주요 설정
      • keepalive: backend server 와 유지할 최대 지속 연결 수 
      • proxy_http_version 1.1 : HTTP/1.1 protocol 사용 명시
      • proxy_set_header Connection ""; : Connection header 를 비워서 연결을 재사용 가능하도록 설정
    • 예시 코드
    # 1. upstream 블록: 백엔드 서버 풀 정의
    upstream backend {
        server 127.0.0.1:8080;
        keepalive 32;
    }
     
    # 2. location 블록: 요청을 upstream으로 전달
    server {
        listen 80;
     
        location / {
            proxy_pass http://backend;           # 요청을 backend로 전달
            proxy_http_version 1.1;              # HTTP/1.1 사용
            proxy_set_header Connection "";      # 연결 재사용
            proxy_set_header Host $host;         # 클라이언트의 Host 헤더 전달
        }
    }

     

     

    3. 참고자료

     

    https://kkang-joo.tistory.com/90

    https://sculove.github.io/post/nginx-reverse-proxy/

    728x90

    댓글