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_limitzone은 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은 사용자 체감에 직접 영향 있음