그누보드 이미지 및 동영상 캐시 서버 구축 방법

그누보드의 /data 폴더에 있는 이미지 및 동영상을 캐시 서버에서 트래픽을 나눌 수 있는 방법입니다.
이미지나 동영상이 많아서 트래픽이 많이 나온다면, 본 서버에서는 CPU 및 DB가 좋은 서버(국내)를 쓰고,
이미지 캐시 서버는 용량 및 트래픽이 높은 서버(해외 또는 국내 저렴한 서버)를 선택하면 비용 절약 및 속도에 도움이 될 것입니다.
현재 제 홈페이지의 이미지도 모두 cdn.wsgvet.com 에서 불러오고 있습니다.
준비사항
1. 본서버(실제 파일이 있는 서버, Origin Server)가 Nginx 또는 Apache로 구성되어 있을 것
https://www.wsgvet.com/ubuntu/126
위 링크처럼 편하게 그누보드를 Nginx에 올릴 수 있습니다.
Apache는 substitute 모듈을 활성화하면 됩니다.
밑에 설정 방법을 알려드리겠습니다.
2. 이미지 캐시서버 도메인의 IP를 캐시서버로 가리킬 것
클라우드플레어 같은 DNS셋팅에서 이미지캐시 서버의 도메인과 IP를 연결시켜야 합니다.
cdn.example.com 같은 서브도메인도 되고, example2.com 처럼 완전히 다른 도메인이어도 상관없습니다.
3. 이미지 캐시서버는 Ubuntu 20.04 LTS 또는 CentOS 8 로 설정하기
다른 운영체제는 구현하지 않았습니다.
4. 80, 443 포트 방화벽을 열 것
Nginx가 80, 443 포트만 사용하므로 열어야 합니다.
80포트는 SSL 인증서 갱신에 반드시 필요합니다.
다른 포트는 닫아도 됩니다.
5. 이미지 캐시서버의 사용자(User)가 sudo 권한을 가질 것
아마 거의 가지고 있을 것입니다.
설치경로
/home/docker-cdn-webserver
위 경로에 설치됩니다.
스케쥴러
crontab에 3가지가 있습니다.
1. SSL 인증서 갱신 매일 검증 : 인증서 유효기간이 1달 남으면 자동으로 재발급 받고 Nginx를 재기동합니다.
2. Docker 이미지 최신화 : Certbot, Nginx, PHP의 Docker 최신버전이 나오면 자동으로 다운 받고 재기동합니다.
3. 캐시버서가 받은 이미지 및 동영상 파일 삭제 : #으로 비활성화 해뒀습니다. 일정기간이 지난 후 삭제하고 싶다면 #을 제거하고, 옵션을 수정할 수 있습니다. 상세설정 방법은 제일 밑에 참고사항의 Lael님 블로그에 있습니다.
설치방법
1. Ubuntu 20.04 LTS
위 명령어로 패키지를 최신화하고, curl, git, cron 필수패키지를 설치합니다.
위 명령어로 설치 스크립트를 다운받고 실행합니다.
2. CentOS 8
위 명령어로 패키지를 최신화하고, curl, git, cron 필수패키지를 설치합니다.
위 명령어로 설치 스크립트를 다운받고 실행합니다.
---
공통 설치진행방법
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을 넣어주세요.
3가지를 입력했다면 자동으로 설치됩니다. 대략 5분이면 설치된 패키지가 나오면서 끝날 것입니다.
이미지 캐시서버는 끝났습니다. 참 쉽죠?
---
본서버 설정방법
본서버(실제 파일이 있는 서버, Origin Server) 설정만 수정하면 됩니다.
(1) Nginx 웹서버 설정방법
https://www.wsgvet.com/ubuntu/126
위와 같은 방법으로 Nginx에 그누보드를 올린 것을 예시로 들어보겠습니다.
./gnuboard/nginx/conf.d/gnuboard.conf
위 파일을 열어보면
대략 위와 같이 나와있을 것입니다.
위 내용을 넣으면 됩니다.
mydomain.com은 본서버의 도메인이고, cdn.mydomain.com은 이미지 캐시서버의 도메인입니다.
대략 위와 같이 될 것입니다.
위 명령어를 내려주면 본서버의 Nginx가 재시작됩니다.
---
Nginx를 서버에 직접 설치했다면 위와 같이 nginx를 재기동 해주면 됩니다.
이제 끝났습니다. 본서버의 썸네일, 이미지, 동영상 파일이 모두 CDN 도메인으로 대치되었을 것입니다.
(2) Apache 웹서버 설정방법
위 명령어로 substitute 모듈을 활성화한 후
위 명령어로 아파치 웹서버를 재시작해줍니다.
/etc/apache2/sites-enabled/
위 폴더에 있는 자신의 아파치 설정파일에서
위 내용을 적당히 넣어주면 됩니다.
mydomain.com은 본서버의 도메인이고, cdn.mydomain.com은 이미지 캐시서버의 도메인입니다.
그리고 위 명령어로 아파치를 재기동하면 됩니다.
이제 끝났습니다. 본서버의 썸네일, 이미지, 동영상 파일이 모두 CDN 도메인으로 대치되었을 것입니다.
감사합니다.
참고사항
이미지 캐시 서버 구축하기 (나만의 CloudFlare 구축하기)
깃허브 소스 : https://github.com/woosungchoi/docker-cdn-webserver
깃허브 소스 : https://github.com/woosungchoi/my-image-cdn
아파치 substitute 모듈 설명 : https://httpd.apache.org/docs/2.4/mod/mod_substitute.html