[Nginx] Server Keepalive와 Upstream Keepalive

2025. 1. 26. 16:58·스터디/JAVA
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
    저작자표시 비영리 변경금지 (새창열림)

    '스터디 > JAVA' 카테고리의 다른 글

    [Nginx] underscore 가 포함된 custom header 확인이 안 될 경우(underscores_in_headers)  (0) 2025.01.25
    [JAVA] gson에서 Deserialize, Serialize, TypeAdaptor 적용하기  (1) 2025.01.22
    [JAVA] 타임존 알아보기 Instant, LocalDateTime, ZonedDateTime  (0) 2024.07.02
    [JAVA] enum 비교는 equals 일까 == 일까?  (1) 2024.04.28
    [JAVA] Junit InvalidTestClassError 오류 원인과 해결 방법  (0) 2024.01.29
    '스터디/JAVA' 카테고리의 다른 글
    • [Nginx] underscore 가 포함된 custom header 확인이 안 될 경우(underscores_in_headers)
    • [JAVA] gson에서 Deserialize, Serialize, TypeAdaptor 적용하기
    • [JAVA] 타임존 알아보기 Instant, LocalDateTime, ZonedDateTime
    • [JAVA] enum 비교는 equals 일까 == 일까?
    zoodi
    zoodi
    IT/개발 관련 지식을 기록하는 블로그입니다.
    • zoodi
      오늘의 기록
      zoodi
    • 전체
      오늘
      어제
      • 분류 전체보기
        • 후기
          • 컨퍼런스
          • 일상리뷰
        • 금융경제
          • 뉴스
          • 금융IT용어
          • 경제 및 부동산
        • 코딩 테스트
        • 스터디
          • JAVA
          • Kotlin
          • Spring
          • React, Nextjs
          • 인공지능 AI
          • Cloud & k8s
          • Kafka
          • Database
          • Network
          • Algorithm
          • Hadoop
          • LINUX
          • R Programming
          • 기타 (소공, 보안)
        • 도서
        • 기타
    • 블로그 메뉴

      • 홈
      • 스터디
      • 금융경제
      • 후기
      • 기타
    • 링크

    • 공지사항

    • 인기 글

    • 태그

      코테
      db
      Spring
      LeetCode
      코딩테스트
      MySQL
      스프링
      springboot
      자바
      스프링부트
      쿠버네티스
      코딩
      C++
      코딜리티
      Python
      이분탐색
      codility
      kafka
      리트코드
      CodingTest
      금융용어
      자료구조
      카카오코테
      Kotlin
      pythoncodingtest
      프로그래머스
      네트워크
      알고리즘
      java
      코테공부
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    zoodi
    [Nginx] Server Keepalive와 Upstream Keepalive
    상단으로

    티스토리툴바