본문 바로가기

Study

SCM Manager에서 대용량(혹은 많은 파일 수)이 Push되지 않을 때 (with nginx)

오랜만에 팁(?) 포스팅입니다.

그동안 너무 지름 포스팅만 해왔던 것 같아요 (...) 그렇다고 그 지름 포스팅, 다 한 것도 아니지만요 ㅋㅋ...

넥슨 공개 채용 서류전형도 통과된 기념(?)으로 간단하게 하나 정리할 겸, 한 번 포스팅 해볼까 합니다.


오늘의 포스팅 주제는 SCM Manager로 관리되는 Git이나 Mercurial 저장소에서 대용량 또는 많은(몇 천 개...) 파일에 대한 푸시가 안되는 것에 대한 해결 방법을 써볼까 합니다. 뭔가 기네요 (...) 이게 또 특수한 것이 nginx proxy를 사용하는 서버에만 해당되는 것 같습니다. 아파치나 그런건 잘 모르겠네요 :)


그동안 개인적인 Source Repository를 네이버 개발자 센터나 Github 등의 업체에서 관리를 했다가 하나 둘 씩 집 서버로 옮기는 중입니다. 그러면서 웹 기반으로 쉽게 관리할 수 있는 도구를 찾았고, 그게 SCM Manager였습니다. Pull과 Push방식이 SSH가 아닌 HTTP 통신을 통해서 하는 것이라 뭔가 제약이 있을 것 같았는데 역시나... 큰 파일(정확히는 잘 모르겠습니다만 대충 수 메가 이상인 것 같네요)과 많은 수의 파일(이것도 특정할 순 없지만 수 백, 수 천의 파일들)을 한꺼번에 Push할 때 아래와 같은 문제가 발생합니다.


abort: HTTP Error 413 Request Entity Too Large


그래서 관련해서 검색해봤더니 (몰랐을 때) nginx관련 된 페이지만 줄창 나와서 뭘까 했는데, 자세히 보니 nginx에서 HTTP 통신 시에 주고 받는 트래픽이랄까요? 그런 것을 기본적으로 제한하고 있나봅니다. 그래서 SCM Manager를 Proxy Pass하는 주소의 설정에 다음과 같은 녀석을 추가하면 완료됩니다.



client_max_body_size 0;



이렇게 하고 저장한 후 nginx를 재시작하면 잘 되지만, 이걸로 인한 문제로는 해당 주소로 대용량의 트래픽 공격(...)이 들어오면 속수무책일 가능성이 있어보이네요. 뭔가 2차 방책을 아시는 분이 있다면 알려주시길 ㅎㅎ...