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 실패로 직결됨
- 구체적인 운영 수치는 조직의 트래픽/보안 정책 문서에서 최종 확정함