콘텐츠로 이동

SVN 서비스 Nginx 설정

SVN(Subversion) 서비스를 제공하기 위한 Nginx 설정 기준 정의함.
SVN 서비스에 필요한 항목만 추가 또는 override함.


1. 적용 대상

  • Subversion(SVN) HTTP/HTTPS 서비스
  • svn.example.com 형태의 전용 도메인 사용 권장
  • 대용량 파일 commit 및 장시간 연결 발생 전제

2. SVN 서비스 특성

  • commit 시 대용량 파일 업로드 발생 가능함
  • update / checkout 시 응답 시간이 길어질 수 있음
  • 하나의 작업에서 다수의 HTTP 요청이 순차적으로 발생함
  • 연결 유지 및 timeout 설정 안정성 중요함

3. 서비스별 필수 설정

3.1 업로드 크기 제한

SVN commit은 단일 요청으로 큰 파일을 전송할 수 있음.

client_max_body_size 200m;
  • 대용량 바이너리 저장소 사용 시 상향 조정 가능함
  • 무제한(0) 설정은 권장하지 않음

3.2 프록시 프로토콜 및 연결 유지

SVN HTTP 동작 안정성을 위해 HTTP/1.1 및 Connection 헤더 처리 필요함.

proxy_http_version 1.1;
proxy_set_header Connection "";

3.3 표준 Forwarded 헤더

Backend에서 URL, 프로토콜, 클라이언트 IP를 정확히 인식하도록 헤더 전달 필요함.

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;

4. 권장 server 설정 예시

아래 예시는 SVN 서비스 전용 도메인 기준임.
Backend 주소는 환경에 맞게 수정함.

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

    client_max_body_size 200m;

    location / {
        proxy_pass http://SVN_BACKEND_UPSTREAM;

        proxy_http_version 1.1;
        proxy_set_header Connection "";

        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;
    }
}

5. 권장 upstream 구성 예시

단일 backend 또는 다중 backend 구성 가능함.

upstream SVN_BACKEND_UPSTREAM {
    server 192.168.0.216:8080;
    keepalive 16;
}
  • 실제 SVN 서비스 포트에 맞춰 조정 필요함
  • upstream keepalive는 선택 사항임

6. 운영 점검 항목

  • commit 시 413 오류 발생하면 client_max_body_size 상향 필요함
  • update / checkout 중 504 / 502 오류 발생 시 timeout 정책 점검 필요함
    (Global timeout 정책 적용 전제)

7. SVN 트래픽 특성 및 rate / connection limit 적용 기준

SVN 서비스 트래픽은 일반 Web/API 트래픽과 성격이 다르므로
rate limit 및 connection limit 적용 시 주의 필요함.

7.1 SVN 트래픽 특성

  • 요청 빈도는 상대적으로 낮음
  • 하나의 작업에서 다수의 HTTP 요청이 순차적으로 발생함
  • 연결 유지 시간이 비교적 김
  • 대용량 파일 commit 시 서버 자원 사용량 증가함

이러한 특성으로 인해 SVN 서비스에서는
요청 처리 안정성과 timeout 설정이 중요함.

7.2 rate / connection limit 적용 원칙

  • rate limit / connection limit은 SVN 트래픽 특성을 고려하여 신중히 적용함
  • 일반 Web/API 기준의 제한 설정을 그대로 적용하지 않음
  • 과도한 limit_conn, limit_req 설정은 다음 문제를 유발할 수 있음
    • commit 중 연결 종료
    • update / checkout 실패
    • 사용자 체감상 불안정한 서비스로 인식됨

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

아래 수치는 절대값이 아닌 참고 예시임.

# connection limit 예시
limit_conn conn_limit 20;

# rate limit은 SVN 서비스에서는 일반적으로 비활성화 권장
# limit_req는 적용하지 않거나 매우 완화된 값 사용
  • 내부 SVN 서버 기준 예시임
  • 사용자 수가 많을 경우 상향 필요함

7.4 상황별 적용 예시

1) 사내 전용 SVN 서버 (사용자 수 적음)

  • 목적: 실수 또는 비정상 클라이언트로 인한 과도한 연결 방지
  • 권장 방향:
    • limit_conn: 10 ~ 20 수준
    • limit_req: 적용하지 않음

2) 사내 + 외부 협력사 SVN 서버

  • 목적: 악의적 트래픽 최소 방어 및 서비스 안정성 확보
  • 권장 방향:
    • limit_conn: 20 ~ 40 수준
    • 접근 제어(IP 제한, 인증 정책) 병행
    • limit_req: 적용 시 매우 완화된 값 사용

3) 대규모 조직 또는 자동화 연동 SVN 서버

  • 목적: 자동화 도구 및 대규모 작업 안정성 보장
  • 권장 방향:
    • limit_conn: 높게 설정하거나 미적용
    • 자동화 도구 전용 계정 또는 IP 분리 후 별도 정책 적용
    • rate limit 사용 지양

8. 정리

  • SVN 서비스에서 limit 설정은 보안보다 안정성 영향이 큼
  • 과도한 제한은 commit / update 실패로 직결됨
  • 구체적인 운영 수치는 조직의 트래픽/보안 정책 문서에서 최종 확정함