그누보드 이미지 및 동영상 캐시서버 구축하기(Nginx,Apache) > 그누보드5 팁자료실

그누보드5 팁자료실

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

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

본문

링크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. 80, 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-cdn-webserver/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-cdn-webserver/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은 캐시서버 도메인입니다.

 

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

 

 

참 쉽죠? 

 

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

추천
5
  • 복사

댓글 34개

Nginx 마지막 서버 설정은 /etc/nginx/nginx.conf 이 파일에서 하면 되는거죠?
http { 단에서 입력하면 될까요?
이제 요기만 남았네요 ㄷㄷㄷㄷㄷㄷ
--with-http_sub_module
sub 모듈은 정상 설치된것 같습니다. 으허헝

방화벽이나 권한 문제인건지... 다시한번 확인해봐야겠네용 ㅎ
고맙습니다. ^^
마지막 설정은 실제 본서버에서 설정하는 것입니다.

캐시서버는 아니구요.

그래도 안되나요?

mydomain 도 바꾸신거죠?
넵 본서버에서 했는데 안되서 멘탈 나가 있습니다. ㅎ
내일 다시 서버 초기화하고 재도전하려구요 ^^
신경써 주셔서 고맙습니다.
네 ㅎㅎ 그대로 카피해서 도메인만 변경하고 수정했는데 안되더라구요.
본서버와 캐시서버 확인해봤는데.. 본서버 data 폴더에 파일이 생성되고
이미지가 표시되지 않는 현상이 발생해서 방화벽, 권한 다 뒤져봤지만 이상이 없어 잠시 넋을 놓고 있습니다. ㅎ
내일은 되겠죠 ^^
본서버에 이미지가 표시가 안된다는 말은 sub_filter가 잘 된다는 말입니다.

그렇다면 캐시서버에서 이미지를 못가져온다는 말인데요.

캐시서버의 443 방화벽을 한번 챙겨봐주세요.

iptables나 ufw 또는 클라우드 방화벽에서 닫혀있을 수도 있습니다.
그리고 잘 되는지 테스트하는 방법은

본서버의 이미지가 예를들어

https://example.com/data/file/free/1.jpg

라면

도메인만 바꿔서

https://cdn.example.com/data/file/free/1.jpg

위와 같이 브라우저에 넣었을때 나와야 캐시서버에서 이미지를 가져가는 것이거든요.


그리고 본서버 캐시서버 둘다 https가 적용되어야 되더라구요.
오라클 클라우드로 세팅하고 있어서요. ㅎ (무료 서버 2개중 1개를 캐시서버로 세팅하다보니 방식이 좀 달라졌습니다 ㅠㅜ)
제가 오라클 클라우드로 캐시서버 돌리고 있어요.

최대한 다 되게 설정했는데..

아무튼 SSL 적용하면 될거예요.
넵.. 중간에 제가 뭔가 실수를 한것 같습니다. 다시 인스턴스 종료하고 다시 세팅해보겠습니다. 늦은 시간까지 정말 고맙습니다. ^^
우분투20.04 세팅하고 별도로 ngnix, php7은 install하지 않아도 될까요?
그리고 바로 curl, git, cron을 설치진행 하면 되겠죠?

새벽까지 작업하고 싶지만 일단 절대권력 와이파이님의 눈치가 보여
내일 야금야금 다시 달려보겠습니다 ㅎㅎ

손이 막 근질근질하네요 ㅋ
역시 서버 굇수님이라 세팅전환도 빠르시네요 ㄷㄷㄷㄷㄷ 정말 부럽습니다.
옆집에 계시면 매일 음료수 사들고라도 배우고 싶네요.
아.. 전 그냥 구글 클라우드 $300 무료로 주는걸로 셋팅하고 테스트 후 바로 삭제합니다. ㅎ

시간당 요금은 진짜 저렴하거든요.

시간당 대충 100원? 정도면 CPU 무난한거에 RAM도 3.75GB 주니깐

설치도 금방하고 테스트도 빨리할 수 있습니다.

테스트하는데 보통 10분 안걸리니깐 50원도 안들어요.
성공했습니다. ㅎㅎ
sub_filter를 넣는 파일이 달랐네요. 으허헣허헣
https://itreport.tistory.com/622
본서버 그누보드를 이분 세팅 기준으로 해놨더니
/etc/nginx/nginx.conf 이 파일에 sub_filter를 세팅하는게 아닌
/etc/nginx/sites-available/default 파일에 sub_filter를 세팅했더니
정상 작동했습니다.

괜히 죄없는 443포트만 열었다 닫았다 했네요 ㅎ
어쨌든 늦은 시간까지 신경써주셔서 고맙습니다.
이제 마음놓고 캐시서버에 이미지 팍팍 올려야겠습니다. ^^
그럼 꿀잠 주무십시오.
© SIRSOFT
현재 페이지 제일 처음으로