Cloudflare 및 S3를 사용하여 나만의 개인 CDN을 설정하는 방법

CDN이란 무엇입니까?



Cloudflare에 따르면 CDN은 다음과 같습니다.

A content delivery network (CDN) refers to a geographically distributed group of servers which work together to provide fast delivery of Internet content.

A CDN allows for the quick transfer of assets needed for loading Internet content including HTML pages, javascript files, stylesheets, images, and videos. The popularity of CDN services continues to grow, and today the majority of web traffic is served through CDNs, including traffic from major sites like Facebook, Netflix, and Amazon.

A properly configured CDN may also help protect websites against some common malicious attacks, such as Distributed Denial of Service (DDOS) attacks.

-- What is a CDN?



tl;dr CDN은 콘텐츠를 효율적으로 전달하는 전 세계 컴퓨터 네트워크입니다.

CDN은 무엇을 제공할 수 있습니까?



  • 내 웹 서버의 부하를 줄이기 위한 캐싱

  • 위치에 관계없이 신속한 배송을 위한 지리적 분포

  • 갑작스러운 트래픽 급증으로부터 DDoS 보호

  • Compression 인터넷 속도가 느린 사용자를 위한 더 빠른 전달을 위한 파일

  • 왜 CDN을 원했을까요?



    공개 정적 파일을 호스팅해야 하는 경우가 많습니다. 빠르고 효율적이며 안정적이고 확장 가능한 방식으로 그렇게 하고 싶습니다.

    최근an article of mine HN 메인 페이지에서 1위를 기록했습니다.



    나는 또한 그것이 Reddit에서 유행하고 있고 다른 곳을 아는 사람이라는 것을 알았습니다. 너무 짧은 이야기. 내 도메인에 눈 깜짝할 사이에 많은 트래픽이 발생했습니다.



    운이 좋게도 최근 몇 주 전에 joel.net에서 Hashnode으로 이사했습니다. 내 이전 웹 호스트는 그 정도의 트래픽을 처리할 수 없었을 것입니다. 이러한 트래픽 폭증 중에도joel.net 전체 시간 동안 온라인 상태였습니다.

    다른 파일도 호스팅하므로 준비하는 것이 좋습니다. 그래서 저는 Full CDN으로 갈 계획입니다.

    클라우드플레어



    이것은 Cloudflare이 들어오는 곳입니다. 저는 그것들을 joel.net에 대한 DNS를 호스트하는 데 사용합니다. Cloudflare는 역시 무료인 DNS 서비스를 통해 이러한 CDN 기능by default을 제공합니다. 🔥

    이제 필요한 것은 정적 파일을 호스팅할 장소입니다.

    AWS 심플 클라우드 스토리지(S3)



    모든 정적 웹 호스트를 사용할 수 있지만 저는 이미 익숙한 S3를 선택했습니다.

    온라인 상태여야 하며 사용자 지정 도메인 이름도 허용해야 합니다.

    내 S3 버킷 설정



    S3 버킷 이름은 도메인 이름과 일치해야 합니다. 이 경우 버킷 이름으로 cdn.joel.net를 사용하고 있습니다.



    이 화면이 나타날 때까지 다음을 여러 번 클릭합니다.



    모든 공개 액세스 차단을 선택 해제해야 합니다. 그런 다음 위의 확인 팝업을 확인하십시오.

    Create Bucket을 클릭할 수 있을 때까지 Next를 계속 클릭합니다.

    이제 퍼블릭 액세스를 위해 이 버킷을 구성해야 합니다. 권한으로 이동한 다음 버킷 정책으로 이동합니다.



    내 버킷 이름cdn.joel.netResource에 삽입한 다음 이를 버킷 정책 편집기에 붙여넣습니다.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "PublicReadGetObject",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::cdn.joel.net/*"
            }
        ]
    }
    

    다음으로 속성에서 정적 웹사이트 호스팅을 설정합니다.



    Use this bucket to host a website를 선택하고 내 index.html 및 내 404/404.html을 설정합니다. 404와 관련된 자산도 거기에 호스팅할 수 있도록 404에 대한 디렉토리를 생성합니다.



    이제 파일을 업로드하고 이 페이지에서 엔드포인트에 액세스하여 제대로 작동하는지 확인할 수 있습니다.

    Cloudflare 구성



    마지막 단계는 새로 만든 S3 버킷을 가리키도록 Cloudflare DNS를 설정하는 것입니다.

    이름cdn과 대상이 S3 버킷의 도메인으로 설정된 새 CNAME 레코드를 추가하여 이를 수행합니다.



    이 시점에서 사용자 지정 도메인 이름을 사용하여 내 버킷에 액세스할 수 있어야 합니다. 이제 내 404 페이지http://cdn.joel.net를 테스트해 보겠습니다. 효과가 있는 것 같습니다!



    이제 마지막 한 가지를 확인하기 위해 개발자 콘솔을 열고 네트워크 탭을 클릭한 다음 요청cdn.joel.net을 클릭하고 헤더로 이동합니다.

    여기에서 볼 수 있습니다content-encoding: br. 이는 HTML이 Brotli 압축 알고리즘을 사용하여 모두 자동으로 Cloudflare에 의해 압축되었음을 의미합니다.




  • 내 📰Newsletter를 확인하세요
  • 제 📺 유튜브 구독,
  • Twitter에서 나에게 안부 전해줘

  • 건배 🍻

    좋은 웹페이지 즐겨찾기