콘텐츠로 이동

Web 서비스 Nginx 설정

Web 서비스(홈페이지, 관리 콘솔, 마케팅 페이지 등)를 제공하기 위한 Nginx 설정 기준 정의함. Web 서비스 특성에 따라 필요한 항목만 추가 또는 override함.


1. 적용 대상

  • 일반 홈페이지
  • 사내 관리 콘솔
  • 마케팅 / 랜딩 페이지
  • 정적 자산(CSS, JS, Image) 포함 Web 서비스

2. Web 서비스 특성 분류 기준

Web 서비스는 이미지 비중정적 자산 제공 방식에 따라 Nginx 설정 및 운영 포인트가 달라짐.

본 문서에서는 Web 서비스를 다음 기준으로 구분함.

  • 이미지가 적은 Web 서비스
  • 이미지가 많은 Web 서비스
    • CDN / Object Storage 사용
    • 서버 public 폴더에서 직접 제공

3. 이미지가 적은 Web 서비스

3.1 서비스 특성

  • HTML / CSS / JS 위주
  • 이미지 수가 적음
  • 요청 수는 많으나 응답 크기는 작음
  • API 호출과 함께 사용되는 경우 많음
  • 정적 자산으로 인한 트래픽 부담이 적음

3.2 설정 기준

client_max_body_size 10m;
  • 일반적인 Web 요청에 충분함
  • 파일 업로드 기능이 없는 경우 적합함
keepalive_timeout 65;
keepalive_requests 1000;
  • 다수의 짧은 요청 처리에 유리함

3.3 운영 포인트

  • gzip 사용 효과 큼
  • rate limit 적용 시 사용자 체감 영향 적음
  • connection limit은 비교적 낮은 값 사용 가능함

4. 이미지가 많은 Web 서비스

이미지가 많은 Web 서비스는 정적 자산을 어디에서 제공하는지에 따라 운영 전략이 달라짐.

4.1 CDN / Object Storage 사용 Web 서비스

서비스 특성

  • 이미지, 영상 썸네일 등 대용량 정적 자산 다수
  • 실제 파일은 CDN 또는 Object Storage(S3, GCS 등)에 위치
  • Web 서버는 HTML 및 링크만 제공함
  • 트래픽 대부분이 CDN으로 분산됨

설정 기준

client_max_body_size 10m;
  • 일반 Web 요청 기준 유지 가능함
  • 관리자 업로드 페이지가 별도일 경우 해당 위치에서만 상향 권장함

운영 포인트

  • Nginx 튜닝보다 CDN 캐시 정책이 중요함
  • Web 서버 connection 부담이 상대적으로 적음
  • rate / connection limit은 보수적으로 적용 가능함

4.2 서버 public 폴더에서 직접 제공하는 Web 서비스

서비스 특성

  • 이미지 파일을 Nginx 서버의 public 디렉토리에서 직접 제공함
  • 브라우저 병렬 요청 다수 발생함
  • 트래픽 증가 시 서버 네트워크 및 I/O 부하 큼
  • CDN 미사용 또는 부분 사용 환경임

설정 기준

client_max_body_size 50m;
  • 관리자 업로드 페이지 고려 시 필요함
sendfile on;
tcp_nopush on;
tcp_nodelay on;
  • 정적 파일 전송 성능 확보 목적
keepalive_timeout 65;
keepalive_requests 1000;
  • 브라우저 다중 요청 처리 안정성 확보

운영 포인트

  • 이미지 요청 수 증가 시 connection limit 영향 큼
  • rate limit은 이미지 요청 특성 고려하여 신중히 적용함
  • 트래픽 증가 시 CDN 전환 검토 필요함

5. 정리

  • Web 서비스는 이미지 비중 + 제공 방식으로 구분함
  • CDN/Object Storage 사용 시 Nginx 부담은 상대적으로 적음
  • 서버 public 폴더 직접 제공 방식은 Nginx 튜닝 중요함
  • 이미지가 많을수록 “전송 최적화”와 “연결 관리”가 핵심임

6. 권장 server 설정 예시

server {
    listen 443 ssl;
    server_name www.example.com;

    client_max_body_size 50m;

    location / {
        proxy_pass http://WEB_BACKEND_UPSTREAM;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

7. 운영 점검 항목

  • 413 오류 발생 시 client_max_body_size 점검 필요함
  • 이미지 로딩 지연 시 CDN 또는 캐시 구조 점검 필요함
  • 트래픽 급증 시 connection limit 정책 재검토 필요함

8. Web 트래픽 특성 및 rate / connection limit 적용 기준

8.1 Web 트래픽 특성

  • 요청 빈도 높음
  • 연결 유지 시간 짧음
  • 브라우저 병렬 요청 다수 발생함
  • 이미지 요청이 전체 트래픽 대부분을 차지할 수 있음

8.2 rate / connection limit 적용 원칙

  • Web 서비스는 rate limit 적용 효과가 큼
  • 이미지가 많은 서비스일수록 connection limit을 보수적으로 설정함
  • API와 동일 기준 적용은 피함

8.3 일반적인 권장 수치 예시 (참고)

limit_conn conn_limit 30;
limit_req zone=req_limit burst=50 nodelay;

전제: req_limit, conn_limit zone은 04-Nginx Global 설정 (공통 기반)에서 먼저 정의되어 있어야 함.

  • 이미지가 많은 Web 서비스 기준 예시임
  • 사용자 수에 따라 조정 필요함

8.4 상황별 적용 예시

1) 사내 Web 서비스 (트래픽 적음)

  • 목적: 기본 안정성 확보
  • 권장 방향:
    • limit_conn: 10 ~ 20 수준
    • limit_req: 선택적 적용

2) 외부 공개 Web 서비스

  • 목적: 비정상 트래픽 및 봇 방어
  • 권장 방향:
    • limit_conn: 20 ~ 40 수준
    • limit_req: burst 기반 완화 설정
    • CDN 또는 WAF 병행 권장

3) 이미지 중심 Web 서비스

  • 목적: 트래픽 폭주 대응
  • 권장 방향:
    • limit_conn: 30 이상
    • 이미지 요청과 페이지 요청 분리 정책 고려
    • 정적 자산 CDN 분리 필수

9. 정리

  • Web 서비스는 정적 자산 비중에 따라 튜닝 기준이 달라짐
  • 이미지가 많을수록 Nginx는 “전송 최적화” 역할에 집중함
  • rate / connection limit은 사용자 체감에 직접 영향 있음