url 주소에서 파일을 다운로드 받을 수 있게 구축해야 될 때가 있습니다.
이번 시간에는 엔진엑스로 다운로드 서버를 만드는 방법을 설명드리겠습니다.
우선 다운로드 서버를 만들 디랙토리를 생성 해 줘야 겠죠?
저는 /var/downloads/ 안에 제가 공유할 파일을 올려놓겠습니다. (디랙토리 생성 : mkdir )
파일 및 폴더를 생성하였으면 이제 엔진엑스 가상도메인 conf 를 열어줍니다.
CentO7 기준 : cd /etc/nginx/conf.d/
Ubuntu 20.04 기준: cd /etc/nginx/sites-available/
만약 가상도메인 설정 방법을 모른다면 아래 글을 참고해 주세요.
이제 이 구문들이 보이는데 이 아랫부분에 이 구문을 추가해 줍니다.
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개가 되겠죠. 이렇게 구성하면 접속에 대한 평등성 접속을 제공할 수 있습니다.
이렇게 속도제한을 거는 법과 엔진엑스로 다운로드 서버를 구축하는 방법에 대해서 설명드렸습니다.
궁금한점이나 이해가 안되시는 부분 , 설명오류는 댓글로 지적및 피드백 환영합니다.
감사합니다!
서브도메인 접속 어떻게 하나요?
무조건 도메인 구매해서 써야 하나요?
로컬에서 작업 테스트 할건데 가상도메인 아무거나 적어도 되는지 궁금합니다!
그럼 위 예제에 따르면 마지막 url 주소가
blog1.ifixcomputer.org/downloads/visual studio code설치파일.exe 인가요~?
로컬에서 테스트 하시면, server_name을 localhost로 작성해 주시면 됩니다!