[Nginx] 파일 및 사진 다운로드 서버 만들기 및 다운로드 속도 제한 방법

url 주소에서 파일을 다운로드 받을 수 있게 구축해야 될 때가 있습니다.

이번 시간에는 엔진엑스로 다운로드 서버를 만드는 방법을 설명드리겠습니다.

우선 다운로드 서버를 만들 디랙토리를 생성 해 줘야 겠죠?

저는 /var/downloads/ 안에 제가 공유할 파일을 올려놓겠습니다. (디랙토리 생성 : mkdir )

파일 및 폴더를 생성하였으면 이제 엔진엑스 가상도메인 conf 를 열어줍니다.

CentO7 기준 : cd /etc/nginx/conf.d/

Ubuntu 20.04 기준: cd /etc/nginx/sites-available/

만약 가상도메인 설정 방법을 모른다면 아래 글을 참고해 주세요.

기존 conf 구문

이제 이 구문들이 보이는데 이 아랫부분에 이 구문을 추가해 줍니다.

location /downloads {                 # 웹주소 뒤에 붙힐 이름 (예: https://redredgroup.com"/downloads" <- 강조한 요부분!)
            alias   /var/downloads/;  # 다운로드 폴더 경로 (반드시 윈와 같이 폴더를 지정해줘야 합니다)
            autoindex   on;           # /var/downloads/  폴더안에 파일을 indexOf 에서 표시 (on : 보여주기 off : 비활성화)
            index  index.html index.htm index.php;
            access_log      /var/log/nginx/down.access.log;  # 접근로그 작성
            error_log       /var/log/nginx/down.error_log; # 에러로그 작성
            charset utf-8; # 접속시 한글깨짐방지 utf-8 지정
        }

저장 후 빠져나옵니다. 그다음 sudo nginx -t 를 입력하여 conf 구문에 오류가 없는지 확인하고 sudo service nginx reload 를 입력하여 엔진엑스 서버를 재부팅 해줍니다.

이제 지정한 주소/downloads 에서 파일명을 입력하면?

요렇게 저장할꺼냐 물어보는 창이 뜹니다! 이렇게 되면 성공한 것입니다.

여기까지만 하면 구축은 끝났습니다. 그런데 이 다운로드 서버를 자신만 쓰면 이렇게 해도 되지만, 만약 100명이 이 서버에서 파일을 다운로드 해간다면 어떨까요?

당연히 한쪽으로 트래픽이 몰려 다른 사용자가 다운로드를 할 수 없더나 서버가 다운될 수 있습니다.

이걸 해결하기 위해선 엔진엑스에서 사용자 마다 다운로드 속도를 제한해주면 됩니다.

다시 conf 설정파일을 열겠습니다.

여기서 구문을 조금 더 추가하겠습니다.

limit_rate_after 900k;
limit_rate 200k;
limit_con 5;

limit_rate_after 10M; (특정 URL 의 처음 10메가까지 속도제한없이 전송)

limit_rate 5M (10메가 이후의 데이터는 5메가로 다운되서 전송 )

limit_con 5; (한 아이피에서 최대 연결가능한 수)

이렇게 추가해주면 다운로드를 시작하고 10메가 까지 속도제한없이 전송되다가 10메가가 도달할 시 5메가로 다운되서 전송이 됩니다. 그리고 한 아이피에서 최대 연결은 5개가 되겠죠. 이렇게 구성하면 접속에 대한 평등성 접속을 제공할 수 있습니다.

이렇게 속도제한을 거는 법과 엔진엑스로 다운로드 서버를 구축하는 방법에 대해서 설명드렸습니다.

궁금한점이나 이해가 안되시는 부분 , 설명오류는 댓글로 지적및 피드백 환영합니다.

감사합니다!

0 0 votes
Article Rating
Subscribe
Notify of
guest

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
down
down
1 year ago

서브도메인 접속 어떻게 하나요?
무조건 도메인 구매해서 써야 하나요?
로컬에서 작업 테스트 할건데 가상도메인 아무거나 적어도 되는지 궁금합니다!
그럼 위 예제에 따르면 마지막 url 주소가
blog1.ifixcomputer.org/downloads/visual studio code설치파일.exe 인가요~?