Os/Linux

이미지 및 동영상 캐시서버 구축하기(Nginx,Apache)

projin 2020. 9. 7. 11:14

출처 :  https://sir.kr/g5_tip/14310

         (우성짱님 : 그누보드 이미지 및 동영상 캐시서버 구축하기(Nginx,Apache))

관련링크

 https://www.wsgvet.com/ubuntu/129

 https://blog.lael.be/post/7605

 

 

링크2에 있는 @라엘 님의 자료를 도커로 쉽게 구성하고, 자신의 웹서버 설정을 수정하여 캐시가 되게 할 수 있습니다.

 

/data/file 및 /data/editor에 있는 이미지 및 동영상을 캐시서버에 따로두어 트래픽을 캐시서버로 몰아줄 수 있습니다.

 

본서버는 CPU 및 DB가 좋은 곳으로 선택하고, 캐시서버는 느리지만 용량 많고 트래픽 널널한 곳으로 선택하면 됩니다.

 

조건 1. 본서버의 웹서버가 Nginx 또는 Apache일 것. 

 

Nginx와 Apache 설정방법을 밑에 적어뒀습니다.

 

 

조건 2. 캐시서버를 위한 도메인이 캐시서버 IP를 가리키게 할 것.

 

cdn.example.com 이나 example2.com 등 아무 도메인이나 상관없습니다.

 

 

조건 3. 캐시서버의 운영체제를 Ubuntu 20.04 LTS 또는 CentOS 8 을 선택할 것.

 

이렇게만 완성되면 바로 설정 가능합니다.

 

 

조건 4. 443포트의 방화벽을 해제해줍니다. 다른 포트는 닫아도 상관없습니다.

 

조건 5. 스크립트를 실행하는 계정이 sudo(관리자) 권한을 가지고 있어야 합니다.

 

 

이제 캐시서버 구축해봅시다.

 

1. Ubuntu 20.04 LTS

 

sudo apt update -y && sudo apt upgrade -y && sudo apt install curl git cron -y && sudo apt autoremove -y

 

 

위 명령어로 패키지를 최신화하고, curl, git, cron 필수패키지를 설치합니다.

 

curl -o dc https://raw.githubusercontent.com/woosungchoi/docker-gnuboard-cdn/master/dc && bash dc setup && rm -f dc

 

 

위 명령어로 설치 스크립트를 다운받고 실행합니다.


2. CentOS 8

 

sudo yum -y update && sudo yum install -y curl git crontabs

 

 

위 명령어로 패키지를 최신화하고, curl, git, cron 필수패키지를 설치합니다.

 

curl -o dcc https://raw.githubusercontent.com/woosungchoi/docker-gnuboard-cdn/master/dcc && bash dcc setup && rm -f dcc

 

 

위 명령어로 설치 스크립트를 다운받고 실행합니다.

 

---

 

1. Enter your Origin domain :

위 내용은 본서버(실제 파일이 있는 서버, Origin Server)의 도메인을 물어보는 것입니다.

서브도메인은 빼고 넣어주세요. (예 : mydomain.com)


2. Enter your CDN domain : 

캐시서버의 도메인을 넣어주세요. (예 : cdn.mydomain.com)


3. Enter your Email address for SSL certificate :

Certbot의 인증서 등록을 위한 Email을 넣어주세요.

 

---

 

캐시서버 구축이 끝났습니다.

 

---

 

본서버 수정사항

 

본서버의 이미지 URL을 수정해야 됩니다.

 

(1) Nginx 웹서버 설정방법

 

sub_filter_once off;

sub_filter 'https://mydomain.com/data/file/' 'https://cdn.mydomain.com/data/file/';

sub_filter 'https://mydomain.com/data/editor/' 'https://cdn.mydomain.com/data/editor/';

 

 

위 내용을 Nginx 설정에 넣고, Nginx를 재시작해주면 끝입니다.

 

mydomain.com은 본서버 도메인, cdn.mydomain.com은 캐시서버 도메인입니다.

 

 

(2) Apache 웹서버 설정방법

 

sudo a2enmod substitute

 

위 명령어로 모듈을 활성화 후 

 

sudo systemctl restart apache2

 

위 명령어로 재시작해줍니다.

 

<Location "/">

AddOutputFilterByType SUBSTITUTE text/html

Substitute "s|https://mydomain.com/data/file/|https://cdn.mydomain.com/data/file/|i"

Substitute "s|https://mydomain.com/data/editor/|https://cdn.mydomain.com/data/editor/|i"

</Location>

 

 

아파치 설정파일에 위와 같이 추가합니다.

 

mydomain.com은 본서버 도메인, cdn.mydomain.com은 캐시서버 도메인입니다.

 

저장 후 아파치를 재시작해주면 됩니다.

 

 

참 쉽죠? 

 

상세 사항은 링크를 참조하세요~