그누보드 이미지 및 동영상 캐시서버 구축하기(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개
아파치를 안쓰다보니 테스트하기가 어렵네요 ㅠㅠ
http { 단에서 입력하면 될까요?
이제 요기만 남았네요 ㄷㄷㄷㄷㄷㄷ
보통 server {} 안에 넣습니다.
일단 넣어서 테스트 해봤는데 안되네용 ㅋ
다시 도전해 보겠습니다 ^^
nginx -V
위 명령어를 눌러서 sub 글자가 있는지 확인해보세요.
sub 모듈은 정상 설치된것 같습니다. 으허헝
방화벽이나 권한 문제인건지... 다시한번 확인해봐야겠네용 ㅎ
고맙습니다. ^^
캐시서버는 아니구요.
그래도 안되나요?
mydomain 도 바꾸신거죠?
내일 다시 서버 초기화하고 재도전하려구요 ^^
신경써 주셔서 고맙습니다.
본서버와 캐시서버 확인해봤는데.. 본서버 data 폴더에 파일이 생성되고
이미지가 표시되지 않는 현상이 발생해서 방화벽, 권한 다 뒤져봤지만 이상이 없어 잠시 넋을 놓고 있습니다. ㅎ
내일은 되겠죠 ^^
그렇다면 캐시서버에서 이미지를 못가져온다는 말인데요.
캐시서버의 443 방화벽을 한번 챙겨봐주세요.
iptables나 ufw 또는 클라우드 방화벽에서 닫혀있을 수도 있습니다.
본서버의 이미지가 예를들어
https://example.com/data/file/free/1.jpg
라면
도메인만 바꿔서
https://cdn.example.com/data/file/free/1.jpg
위와 같이 브라우저에 넣었을때 나와야 캐시서버에서 이미지를 가져가는 것이거든요.
그리고 본서버 캐시서버 둘다 https가 적용되어야 되더라구요.
이게 문제였던것 같습니다 ㅎ
고맙습니다. ^^
SSL 셋팅이 안되었나요?
최대한 다 되게 설정했는데..
아무튼 SSL 적용하면 될거예요.
그리고 바로 curl, git, cron을 설치진행 하면 되겠죠?
새벽까지 작업하고 싶지만 일단 절대권력 와이파이님의 눈치가 보여
내일 야금야금 다시 달려보겠습니다 ㅎㅎ
손이 막 근질근질하네요 ㅋ
딱 2줄이면 됩니다.
뒤에 와이파이님의 따가운 시선을 참으면서 ㅋ
성공하면 알려주세요~
다시 센토스 설치 중입니다. ㅎㅎ
옆집에 계시면 매일 음료수 사들고라도 배우고 싶네요.
시간당 요금은 진짜 저렴하거든요.
시간당 대충 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포트만 열었다 닫았다 했네요 ㅎ
어쨌든 늦은 시간까지 신경써주셔서 고맙습니다.
이제 마음놓고 캐시서버에 이미지 팍팍 올려야겠습니다. ^^
그럼 꿀잠 주무십시오.
저랑 이름이 같으신가 봅니다. 영광이네요 ㅋㅋㅋㅋ