CDN 신청
    • PDF

    CDN 신청

    • PDF

    Article Summary

    Classic/VPC 환경에서 이용 가능합니다.

    네이버 클라우드 플랫폼 콘솔에서 CDN 서비스를 신청하는 방법을 설명합니다.

    CDN 신청

    Global CDN 서비스를 새로 신청하는 방법은 다음과 같습니다.

    1. 네이버 클라우드 플랫폼 콘솔의 Region 메뉴와 Platform 메뉴에서 이용 중인 환경을 클릭해 주십시오.
    2. Services > Content Delivery > Global CDN 메뉴를 차례대로 클릭해 주십시오.
    3. [CDN 신청] 버튼을 클릭해 주십시오.
    4. 다음 단계를 차례대로 진행해 주십시오.

    1. 서비스 설정

    서비스 이름, 프로토콜, 도메인 등 CDN 서비스와 관련된 속성을 설정해 주십시오. 설정하는 항목은 다음과 같습니다.

    항목설명
    서비스 이름서비스를 구별할 고유의 이름 입력
    • 3~35자로 영어, 숫자, 하이픈(-)을 사용하여 입력
    서비스 프로토콜CDN 서비스에서 사용할 프로토콜 설정
    • HTTP/HTTPS/ALL 중에서 선택
    • HTTPS 선택 시 원본 서버에서도 HTTPS로 통신 필요
    • 고객이 보유한 별도의 도메인 사용 시 HTTP만 지원
    서비스 도메인클라이언트가 접근하는 CDN 도메인 설정
    • CDN 도메인 사용: 네이버 클라우드 플랫폼의 CDN 도메인 사용
      • 자동생성: '임의 ID.gcdn.ntruss.com' 형태로 자동 생성
      • 직접입력: '입력값.gcdn.ntruss.com' 형태로 생성. 입력값은 영어, 숫자, 하이픈(-)을 사용해 40자 이내로 입력
    • 고객 보유 도메인 사용: 네이버 클라우드 플랫폼이 제공하는 도메인이 아닌 고객이 보유한 별도의 도메인 사용. 사용할 도메인을 직접 입력
    Access LogCDN에 유입되는 요청 정보 로그를 Object Storage 안에 저장할지 여부 선택
    • 사용 선택 시 이용할 Object Storage의 리전과 버킷 선택
    • 로그 데이터는 매시 20분마다 1시간 간격으로 저장되며, 버킷 내 '서비스명_인스턴스 ID_YYYYMMDD_HH.log.gz' 형식으로 저장
    • 최초 로그 수집 시 일정 시간(최대 24시간) 소요
    설명필요 시 CDN에 대한 간단한 메모 입력
    참고
    • 로그 저장 기능 사용 시 Object Storage의 이용 신청 및 버킷 생성이 완료되어 있어야 합니다. 서비스 이용에 대한 자세한 설명은 Object Storage 사용 가이드를 참고해 주십시오.
    • 로그 파일은 여러 항목을 포함하며, 각 항목은 공백으로 구분됩니다. 데이터가 없는 경우에는 "-"로 표시됩니다.
    • 로그 파일 포맷
      client_ip - - [date] "http_method url_stem HTTP/1.1" status_code total_bytes "referrer" "user_agent" "cookie"
      • client_ip: 클라이언트 IP
      • - -: 미사용 값
      • [date]: 요청 일시
      • "http_method url_stem HTTP/1.1": HTTP 요청 메소드, URI, HTTP 버전
      • status_code: 응답 코드
      • total_bytes: 서버가 클라이언트에게 응답한 전체 용량
      • "referrer": 요청 시 referrer 정보
      • "user_agent": 클라이언트의 에이전트 정보
      • "cookie": 요청 시 쿠키 값
      • <예시>
        211.249.40.9 - - [09/Feb/2018:03:50:01 +0000] "GET /nrbjdrlsuogw479257.gcdn.ntruss.com/sample_mv.mp4 HTTP/1.1" 200 20444604 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-"
        

    2. 원본 설정

    콘텐츠 원본의 위치를 지정하고, 원본 서버와 CDN 캐시 서버 간 통신에 관련된 속성을 설정해 주십시오. 설정하는 항목은 다음과 같습니다.

    항목설명
    원본 위치CDN 서비스를 이용할 콘텐츠 원본의 위치 지정
    • Object Storage: 네이버 클라우드 플랫폼의 Object Storage에 원본이 있다면 선택하고 리전 및 버킷 지정
      • 특정 서버만 접속 허용하는 접근 제어가 적용된 버킷은 사용 불가
      • CDN과 Object Storage 간 발생하는 네트워크 전송 요금은 무료
    • 직접 입력: Object Storage 외 다른 위치에 원본이 있다면 선택하고 해당 IP나 도메인명 입력
      • 도메인으로 설정 권장
    • 선택한 서비스 프로토콜 유형에 따라 프로토콜의 포트 번호 입력
      • HTTP 프로토콜의 기본 포트 번호 외에 다른 포트를 사용할 경우, 보안 정책에 따라 다음의 포트 번호만 허용: 72, 80-89, 443, 488, 591, 777, 1080, 1088, 1111, 1443, 2080, 7001, 7070, 7612, 7777, 8000-9001, 9090, 9901-9908, 11080-11110, 12900-12949, 45002
    • HTTPS 사용 시 'man-in-the-middle(MITM)' 공격을 예방하기 위해 원본의 인증서 유효 여부 확인. 유효성이 확인되는 인증 기관의 목록은 유효 인증 기관 참고.
    원본 경로(선택)실제 콘텐츠 원본이 위치한 상세 디렉터리 입력. 원본 위치 전체 경로가 아닌 특정 경로를 사용할 경우에만 추가로 지정.
    • '/base_directory_name' 형식으로 입력
    • 최하위 디렉터리에는 '/' 생략
    Forward Host HeaderCDN에서 원본 서버로 요청할 때 전달되는 호스트 헤더 설정. 원본 위치가 Object Storage일 경우 Origin Hostname만 설정 가능.
    • Incoming Host Header: 클라이언트 요청 시 전달된 호스트 헤더를 그대로 사용. 서비스 도메인의 호스트 헤더 기반. 서비스 프로토콜로 HTTP를 선택하고 콘텐츠 원본이 외부에 위치한 경우 선택 가능.
    • <예시> ex.gcdn.ntruss.com/img.jpg 요청 시 호스트 헤더는 ex.gcdn.ntruss.com
    • Origin Hostname: 원본 서버가 특정 가상 호스트만 수신하도록 설정된 경우, 그 호스트 헤더를 사용.
    • Custom Value: 호스트 헤더를 사용자 지정값으로 설정. 호스트 헤더값을 직접 입력.
    Cache Key Hostname콘텐츠의 고유 식별자인 캐시 키 설정. 서비스 특성에 따라 적절하게 선택 시 캐싱 효율 향상.
    • Incoming Host Header: 도메인명에 따라 콘텐츠를 개별적인 캐시 키로 구분. 서비스 도메인에 따라 전송하는 콘텐츠가 다를 경우 선택.
    • <예시> logo.gif에 대하여 http://sample.gcdn.ntruss.com/logo.gif와 http://example.gcdn.ntruss.com/logo.gif는 다른 도메인이므로 별개의 콘텐츠로 캐싱
    • Origin Hostname: 도메인명이 달라도 동일한 캐시 키로 식별. 서비스 원본 서버와 전송하는 콘텐츠가 동일할 경우 선택.
    • <예시> logo.gif에 대하여 http://www.sample.com/logo.gif와 http://www.sample.co.kr/logo.gif를 동일한 콘텐츠로 식별해 중복 캐싱하지 않음
    Gzip Compression콘텐츠의 압축 전송 여부 선택
    • 압축할 경우 원본 서버의 트래픽을 줄이고 응답 속도 향상
    • CDN에서 원본 서버로 “Accept-Encoding: gzip” 요청하여 압축된 콘텐츠를 응답받음
    • 원본에서 Gzip 압축 지원 필요
    Custom Header (원본요청)원본 요청 시 헤더를 추가/변경/삭제하여 요청하도록 설정. 원본에 대한 접근 제어 목적으로 활용 가능.
    • 헤더 값은 최대 256 bytes까지 입력 가능
    • 사용 불가한 문자열: "(),/:;<=>?@[]{}", 알파벳 또는 숫자 외의 문자, 공백
      <예시> Action: Add / Header Name: NCP-Custom-Header / Header Value: ncp

    유효 인증 기관(Certificate Authority)

    HTTPS 사용 시 'man-in-the-middle(MITM)' 공격을 예방하기 위해 원본 서버의 인증서 유효 여부를 확인합니다. 다음의 Certificate Authority(CA)에서 발급받은 인증서는 유효성이 확인됩니다.

    Certificate Authority
    VeriSign Class 4 Public Primary Certification Authority - G3
    AddTrust External CA Root
    Class 2 Primary CA
    Network Solutions Certificate Authority
    Entrust Root Certification Authority
    thawte Primary Root CA
    DigiCert Assured ID Root CA
    QuoVadis Root CA 2 G3
    GlobalSign Root CA
    America Online Root Certification Authority 2
    QuoVadis Root Certification Authority
    QuoVadis Root CA 3
    SwissSign Silver CA - G2
    Certum CA
    GlobalSign
    SwissSign Gold CA - G2
    SecureTrust CA
    AffirmTrust Commercial
    Go Daddy Root Certificate Authority - G2
    Entrust Root Certification Authority - G2
    Global Chambersign Root
    thawte Primary Root CA - G3
    Starfield Services Root Certificate Authority - G2
    Baltimore CyberTrust Root
    VeriSign Class 3 Public Primary Certification Authority - G5
    VeriSign Universal Root Certification Authority
    GeoTrust Global CA
    AffirmTrust Premium
    DigiCert High Assurance EV Root CA
    QuoVadis Root CA 2
    UTN-USERFirst-Hardware
    Entrust.net Certification Authority (2048)
    GeoTrust Primary Certification Authority
    AffirmTrust Networking
    GeoTrust Primary Certification Authority - G3
    DST Root CA X3
    COMODO Certification Authority
    UTN - DATACorp SGC
    VeriSign Class 3 Public Primary Certification Authority - G3
    TC TrustCenter Class 2 CA II
    Cybertrust Global Root
    DigiCert Global Root CA

    3. 캐싱 설정

    Global CDN의 캐싱 옵션, 캐싱 만료 시간 등 캐싱과 관련 속성을 설정해 주십시오. 설정하는 항목은 다음과 같습니다.

    항목설명
    Caching Option기본적인 캐시 정책 설정
    • 원본의 cache control 및 expires 헤더 우선: 원본 서버에 설정된 Cache-Control 또는 Expires 헤더 값에 따라 캐싱 동작
      • 원본에서 캐싱 기준되는 헤더를 응답하지 않을 경우 하위의 Cache expiry 설정값 적용
    • Cache: Cache expiry 또는 max-age에 설정된 기간 동안 개체 캐싱
    • No Store: CDN 서버에서 캐싱하지 않음
    • Bypass Cache: 개체를 캐싱하지 않고 모든 요청을 원본으로 보내 응답 전달
    • Honor Origin Cache Control: 원본 서버에 설정된 Cache-Control 헤더 값에 따라 캐싱 동작
    • Honor Origin Expires: 원본 서버에 설정된 Expires 헤더 값에 따라 캐싱 동작
    Force Revalidation of Stale Objects원본 서버와 통신이 어려울 경우, 캐싱된 콘텐츠의 제공 여부 선택
    • 유효 여부 상관없이 캐싱된 콘텐츠를 제공: 원본 서버로 콘텐츠의 유효성을 재검증할 수 없어도 캐싱된 콘텐츠 제공. 원본 서버에 장애가 있어도 서비스 가능.
    • 유효한 콘텐츠만 제공: 원본 서버로 유효성이 재검증된 콘텐츠만 제공. 원본 서버 장애 시 유효하지 않은 콘텐츠의 전송이 서비스에 영향을 줄 경우 선택.
    Cache expiry캐싱된 콘텐츠와 원본을 비교하여 변경 여부를 확인하는 주기 지정
    • 원본 서버의 응답 헤더에 Cache-Control: max-age 존재 시 해당 설정이 우선 적용
    • 콘텐츠 업데이트 주기가 짧을 경우 기간을 짧게 지정 권장. 단, 원본의 부하 증가.
    Ignore Query String원본 서버에 콘텐츠 요청 시 클라이언트 요청문의 쿼리 문자열을 무시할지 여부 선택. 캐싱 효율을 위해 사용 가능.
    • 원본 서버에서 쿼리 문자열에 관계없이 동일한 콘텐츠를 응답할 경우 사용
    Remove Vary Header원본에서 Vary 헤더를 응답할 경우 헤더의 삭제 여부 선택. 캐싱 효율을 위해 사용 가능.
    • Vary 헤더를 응답하더라도 콘텐츠가 동일한 경우 사용
    • 콘텐츠에 다양한 버전이 있으며 User-Agent, Referer, Cookie 등의 Vary 요청 헤더에 따라 다른 콘텐츠를 응답해야 할 경우 미사용
    Large File Optimization대용량 파일을 서비스할 때 캐싱 효율을 위한 최적화 전송 여부 선택
    • 100 MB 이상의 파일을 전송 시 2 MB 단위로 잘라서 캐싱
    • 지원 확장자: 3g2, 3gp, asf, avi, bz2, dmg, exe, f4v, flv, gz, hdp, iso, jxr, m4v, mkv, mov, mp4, mpeg, mpg, mts, pkg, qt, rm, swf, tar, tgz, wdp, webm, webp, wma, wmv, zip
    • 지원 용량: 100 MB~323 GB
    • 기능을 사용하려면 원본 서버에서 Range 응답 설정 필요
    • 콘텐츠명을 변경하지 않고 업데이트하려면 퍼지 수행 후 진행 필요

    4. Viewer 전송 설정

    CDN 캐시 서버에서 사용자에게 콘텐츠를 전송할 때 적용할 속성을 설정해 주십시오. 설정하는 항목은 다음과 같습니다.

    항목설명
    Gzip Compression클라이언트에게 콘텐츠 전송 시 압축 전송 여부 선택
    • 원본 서버에서 콘텐츠 확장자 또는 요청 헤더에 따라 유연하게 적용하려면 원본의 압축 설정과 동일하게 적용 선택
    • 클라이언트의 에이전트(브라우저 또는 디바이스)에서 Gzip/Unzip 지원 필요. HTML, JavaScript, Text 기반의 10 KB 이상 콘텐츠를 서비스한다면 사용 권장.
    • 이미지(jpg, png 등), 동영상(mp4, flv 등), 이미 압축이 적용된 콘텐츠만 서비스한다면 미사용 권장
    • 압축 전송 사용 시 대상 콘텐츠에 다음의 Mime Type 적용
      Text/html*, text/css*, application/x-javascript*, application/javascript*
    Referrer Domain특정 도메인 레퍼러가 포함된 요청만 응답하도록 설정. 접근 제어 목적으로 활용.
    • 사용 시 응답 허용할 레퍼러 입력
      • 최대 50개 입력 가능하며, 와일드카드(* ), 하이픈(-), 마침표(.) 사용 가능
      • 와일드카드(* ) 사용 시 하위 도메인도 포함하여 응답 허용
    • 기능 사용 시, 레퍼러가 없는 요청은 기본적으로 응답을 허용하나, 등록된 레퍼러가 있어야만 응답을 허용하려면 허용 안함 선택
    Security Token토큰 인증으로 허용된 요청만 응답하도록 설정
    • 사용 시 토큰 위치를 Query String 또는 Cookie 중에서 선택
    • 인증 예외 대상 확장자 (선택): 입력된 확장자는 예외적으로 인증 토큰 없이 콘텐츠 호출/응답 가능하도록 설정. 확장자명 입력 후 [Enter] 키를 눌러 등록.
    • 토큰을 생성하는 방법에 대한 자세한 설명은 인증 토큰 생성 참고
    Custom Header (사용자 응답)응답 시 헤더를 추가/변경/삭제하여 응답하도록 설정
    • 헤더 값은 최대 256 bytes까지 입력 가능
    • 사용 불가한 문자열: "(),/:;<=>?@[]{}", 알파벳 또는 숫자 외의 문자, 공백
      <예시> Action: Add / Header Name: Access-Control-Allow-Origin / Header Value: *

    인증 토큰 생성

    Security Token 사용 시 다음의 내용을 참고하여 인증 토큰을 생성해 주십시오.

    • 토큰은 언어별로 제공되는 SDK를 통해 생성할 수 있습니다.
    • 토큰 생성에 필요한 파라미터는 다음과 같습니다.
      • 토큰명: 'token'으로 일괄 적용
      • Start(st)/End times(exp): 토큰이 유효한 시작/종료 시간
      • Key: Security Token 설정 시 자동으로 발급되어 인증암호로 표시되는 값
      • ACL(Acess Control List): 토큰으로 접근을 허용할 대상 URI. 와일드카드(*)를 활용해 특정 경로 단위로 설정 가능.
    • <예시>
      • Java로 인증 토큰 생성
        • 토큰 생성 샘플 코드
        package com.akamai.edgeauth;
        
        public class ExampleEdgeAuth {
           public static void main(String[] args) {
           String hostname = "example.cdn.ntruss.com";   // 서비스 도메인명
           String ET_ENCRYPTION_KEY = "b2b1";            // 토큰을 생성하기 위한 key
           String tokenName = "token";                   // 토큰명은 'token' 고정
           long duration = 3600L;                        // 3600 seconds = 1 hour
        
           try {
                 EdgeAuth ea = new EdgeAuthBuilder()
                       .key(ET_ENCRYPTION_KEY)
                       .startTime(EdgeAuth.NOW)
                       .windowSeconds(duration)
                       .tokenName(tokenName)
                       .escapeEarly(false)
                       .build();
        
                 String acl = "/sample.pdf*"; //*/
                 String file_url = "/sample.pdf";
                 String token = ea.generateACLToken(acl);
                 String url = String.format("http://%s%s?%s=%s", hostname, file_url, tokenName, token);
        
                 System.out.println(url);
        
           } catch (EdgeAuthException e) {
                 e.printStackTrace();
           }
           }
        }
        
        • 코드 실행 후 생성된 요청 URL
        http://example.cdn.ntruss.com/sample.pdf?token=st=1592202370~exp=1592205970~acl=/sample.pdf*~hmac=d422a548ae769bbaddc1d27f03fe6e096a4ba492928f3eb9c09824f93d78f507
        
      • Python으로 인증 토큰 생성
        • 토큰 생성 샘플 코드
        $ python cms_edgeauth.py -k b2b1 -n token -s now -w 3600 -a /sample.pdf* 예시와 같이 입력어 입력
        => 다음과 같은 결과 출력
        token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779
        
        • 코드 실행 후 생성된 요청 URL
        http://example.cdn.ntruss.com/sample.pdf?token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779
        
    참고

    사용자의 토큰 생성 서버의 시간이 CDN 서버의 시간보다 2~4초 빠르면, CDN 서버에서 토큰 파라미터 중 start_time 값을 'too early'로 인식해 인증 실패가 발생할 수 있습니다. 이를 방지하기 위해, start_time 값을 현재보다 10초 빠르게 설정하고, end_time 값을 10초 늦게 설정해 주십시오. 토큰을 생성하는 웹 서버의 시간을 NTP로 정확하게 동기화해야 합니다.

    5. 확인

    설정 내용을 확인한 후 화면 하단의 [CDN 신청] 버튼을 클릭해 주십시오.

    • 신청한 CDN이 목록에 추가되며 신청중 상태로 표시됩니다.
    • CDN이 글로벌 거점에 모두 구성되기까지 약 2시간 이상이 소요되며, 구성이 완료되면 운영중 상태로 변경됩니다.

    CDN 사용을 위한 고객 DNS 설정

    CDN 신청 시 서비스 도메인을 고객이 보유한 별도의 도메인으로 설정했다면, CDN 서비스 신청 후에 표시되는 CDN 서비스 도메인을 운영 중인 DNS에 연결해야 정상적으로 서비스를 이용할 수 있습니다.
    운영 중인 DNS 시스템 또는 호스팅 업체에서 CNAME 레코드를 이용해 CDN 서비스 도메인을 등록해 주십시오.

    서버에서 dig 또는 nslookup 명령어를 통해 CNAME 레코드가 정상적으로 설정되었는지 확인할 수 있습니다.

    • <예시> 고객 도메인이 'sample.example.com', CDN 서비스 도메인이 'example.gcdn.ntruss.com'인 경우
      sample.navercdn.com 600 IN  CNAME   example.gcdn.ntruss.com.
      

    이 문서가 도움이 되었습니까?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.