Global CDN 가이드
    • PDF

    Global CDN 가이드

    • PDF

    기사 요약

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

    Global CDN 서비스 소개

    네이버 클라우드 플랫폼[공공기관용] Global CDN 서비스의 개념과 기본 구조를 설명합니다.

    Global CDN이란

    Global CDN은 전 세계 거점에 위치한 캐시 서버를 통해 사용자에게 빠르고 안전하게 콘텐츠를 전송하는 서비스입니다. 네이버 클라우드 플랫폼[공공기관용]에서 제공하는 Global CDN을 통해 간단한 설정으로 전 세계 수십 만대의 캐시 서버를 활용하여 대용량 파일 전송속도 품질을 향상시킬 수 있으며, 대규모 트래픽에도 원본 서버 부하를 감소하고 사용자에게 안정적으로 서비스 할 수 있습니다.

    Global CDN의 주요 기능 소개

    1. Global 콘텐츠 전송

      전 세계 120여 개 국가에 위치한 1,500개 이상의 네트워크에 분산된 21만대 이상의 캐싱 서버를 활용하여 사용자와 가까운 캐시 서버가 원본 서버보다 빠르게 콘텐츠 전송이 가능합니다. 캐시 서버들이 원본 서버로부터 콘텐츠를 캐싱함으로써 원본서버 부하를 감소하고 대규모의 트래픽을 처리할 수 있습니다.

    2. 다양한 원본 서버 지원

      Global CDN을 통해 콘텐츠를 전송하기 위해서는 원본 서버로 접근하여 콘텐츠를 캐시하고 전송해야 합니다.
      Global CDN은 HTTP/HTTPS 프로토콜을 통해 다양한 원본 서버와의 콘텐츠 연동을 지원 합니다. 원본 서버로 고객이 보유중인 다양한 웹 서버 및 네이버 클라우드 플랫폼의 Server를 설정할 수 있으며, 연결을 위한 포트를 자유롭게 지정할 수 있습니다.

    3. 강력한 콘텐츠 전송 보안

      많은 브라우저에서 웹 서비스를 HTTPS로 할 경우 콘텐츠가 HTTP로 호출되면 보안경고 문구를 보여주고 있습니다. Global CDN에서는 HTTPS 프로토콜로 콘텐츠 전송이 가능합니다. HTTP도 가능하며 2가지를 혼용하거나 HTTPS만 활용하기 위해 HTTP 제약도 가능합니다.
      HTTPS 프로토콜을 선택할 경우 원본 서버와도 HTTPS로 통신하여 전체적인 콘텐츠 전송의 경로에서 보안이 강화됩니다.
      레퍼러로 등록된 도메인 기준 접근 허용 기능을 제공하며 Secure-Token 기반의 보안 URL로 콘텐츠 접근을 제한할 수 있습니다.

    4. 고속 Purge 기능

      동일한 콘텐츠명으로 원본 콘텐츠 변경 시 전 세계에 분산된 캐시 서버에 이를 즉각적으로 반영하기 위해 고속 Purge를 제공합니다. 전 세계 수십 만대의 캐시 서버에 저장되어 있는 콘텐츠를 수 초 이내 Purge를 수행하여 삭제합니다. 캐시 삭제 후 사용자 요청에 의하여 새로운 콘텐츠를 원본으로부터 가져와 캐싱하여 제공하며 이는 콘텐츠의 신뢰성을 보장할 수 있습니다.

    ※ Global CDN은 국내 및 중국내 서비스에 대한 품질을 보장하지 않습니다.

    • 국내 서비스는 CDN 서비스를 이용하세요.

    • 중국에서 CDN 서비스를 제공하려면 ICP(Internet Content Provider) License가 필요합니다.

    자세한 내용은 고객지원에 문의하세요.

    Global CDN 관련 용어 정리

    용어설명
    서비스 도메인서비스에서 콘텐츠 전송 시 사용자에게 노출되는 도메인을 의미. Global CDN 구성 후 이 도메인을 서비스 내에 링크해야 Global CDN을 통해 콘텐츠를 캐싱하여 전송
    원본Global CDN은 사용자 요청에 의하여 콘텐츠를 캐싱/전송하며, 캐싱의 콘텐츠를 가져오기 위한 서버
    Caching사용자 요청에 의해 요구되는 콘텐츠를 빠르게 제공하기 위해 캐시 서버에 저장
    Cache ExpiryCDN에서 캐싱된 콘텐츠가 원본서버에서 변경되었는지 여부를 확인하는 주기를 지정
    HIT접속자가 요청한 콘텐츠가 유효한 형태로, CDN 캐시 서버에 있어 접속자의 요청에 대해서 바로 응답할 때 “Cache Hit”이라고 함
    MISS요청한 콘텐츠가 CDN 캐시서버에 없을 경우 원본서버로부터 콘텐츠를 전송 받은 후 서버에 저장하게 되는 경우를 ‘MISS’라고 함. 이전에 요청된 이력이 없거나 유효 시간이 만료된 경우, 요청되었지만 응답한 적이 없거나 캐시를 하지 않도록 설정했을 경우에만 발생함.
    BYPASS원본서버 응답헤더에 Set-Cookie헤더가 있거나, Cache-Control 헤더에 private, no-cache, max-age=0 등의 내용이 있는 경우 CDN서버에서 캐싱하지 않고 접속자에게 전달하는 것을 의미함.
    Ignore Query StringCDN 서비스가 원본 서버에 요청할 때 ?id=1234 와 같이 URL에 포함된 GET 파라미터를 제거한 후에 요청
    Referrer Domain콘텐츠가 지정된 도메인에만 제공되므로 다른 사이트에서 참조되는 것을 방지함. 도메인은 www.domain.com 또는 *.domain.com 형식을 지원하며, 숫자, 영문자, "*", "-", "."만 사용 가능.
    Secure TokenQueryString 기반의 Secure Token을 활용하여 허용된 접근에만 콘텐츠를 전달

    Global CDN 신청

    Global CDN 신청

    네이버 클라우드 플랫폼에 접속하여 콘솔 > Services > Content Delivery > Global CDN 메뉴로 이동합니다.

    ② Global CDN 서비스를 신청하려면 [CDN 신청] 버튼을 클릭합니다.

    서비스 설정

    서비스 이름, 서비스 프로토콜, 서비스 도메인을 설정합니다.
    설정하기 전에 각 항목의 [?] 버튼을 클릭하여 도움말을 참고하시기 바랍니다

    ① 신청하고자 하는 Global CDN 서비스 이름을 입력합니다.

    ② 서비스 프로토콜을 선택합니다. 서비스 프로토콜로 HTTPS, HTTP/HTTPS 선택 시 추가 안내사항에 대해 확인합니다. HTTPS 적용시 원본에서도 HTTPS로 응답해야 합니다.

    • [참고. HTTPS 혹은 HTTP/HTTPS 프로토콜 선택시 안내사항]

    networking-7-3_ko.png

    ③ 서비스 도메인을 선택합니다.

    • CDN 도메인을 사용할 경우, 기본적으로 [서비스ID].gcdn.gov-ntruss.com 형태로 자동 발급됩니다.
    • 고객 보유 도메인을 사용할 경우, 소유하고 있는 도메인을 직접 입력합니다.
    • 고객 보유 도메인은 최대 50개까지 지원합니다.
    • 고객 보유 도메인 사용시에는 HTTP 프로토콜만 지원합니다.

    ④ Access Log 저장 여부를 선택합니다.

    • CDN으로 요청 온 Log를 사용자의 Object Storage에 저장할 수 있습니다. Log를 저장하기 위해서는 Object Storage에서 Bucket 생성해 두어야 합니다.
    • 1시간 간격으로 요청된 Log 데이터를 압축 포맷(gz)으로 저장합니다. Log를 저장하면 매 시 20분 이후 이전 시각의 Log 확인 가능합니다.
    • 저장되는 Log의 형태는 아래와 같으며, 각 항목은 공백으로 구분합니다. 데이터가 없는 경우에는 "-"으로 표시합니다.
    예시:
    211.249.40.9 - - [09/Feb/2018:03:50:01 +0000] "GET /nrbjdrlsuogw479257.gcdn.gov-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" "-"
    
    항목설명
    client_ipClient IP
    - -미사용 값 (-)
    [date]요청 일자/시간
    "http_method arl_stem HTTP/1.1"http 요청 method와 URI, HTTP 버전
    status_code응답코드 (2xx, 3xx, 4xx 등)
    total_bytes서버에서 Client에 응답한 전체 용량(bytes)
    "referrer"요청시 referer
    "user_agent"Client의 user-agent
    "cookie"요청시 cookie 값

    ⑤ 설명을 입력합니다.

    • CDN 관련 설명을 입력할 수 있습니다. 필수 값이 아니므로 입력하지 않아도 됩니다.

    원본 설정

    원본 위치, 원본에 전달하는 Host 헤더, Cache Key Hostname, Gzip 압축 지원 여부를 설정합니다.

    ① Global CDN 서비스를 이용할 원본의 위치를 지정합니다.

    • 네이버 클라우드 플랫폼의 Object Storage를 이용할 경우, Public 권한이 부여된 Bucket을 미리 생성해야만 이용할 수 있습니다. 원본으로 Object Stroage 활용 시 CDN <-> Object Storage간에 발생하는 네트워크 전송요금은 무과금 처리됩니다.
    • 선택한 프로토콜에 따라 HTTP 포트 번호, HTTPS 포트 번호를 입력할 수 있습니다. 기본 설정 HTTP 포트는 80, HTTPS 포트는 443입니다.
    • HTTPS 적용 시 GCDN에서 'man-in-the-middle(MITM)' 공격을 예방하기 위해 원본 서버의 인증서 유효 여부를 확인합니다. 아래와 같은 Certification 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
    주의

    “원본 경로(선택)” 옵션을 활용할 경우 서비스 경로가 다음과 같이 지정되오니 참고 부탁드립니다.

    예시) 원본 경로(선택) 옵션을 활용할 경우 : 원본 서버에 /example/ 경로를 vhost root 경로로 설정한 경우
    * 원본 경로 : http://origin.naver.com/example/logo.gif
    * Global CDN 서비스 경로 : http://example.gcdn.gov-ntruss.com/logo.gif (입력한 원본 경로는 제외됩니다)
    
    • 직접 입력할 경우, 원본 서버의 IP 또는 도메인 이름을 입력하며 IP 보다는 도메인으로 설정하는 것을 권고합니다.

    • 원본 서버가 HTTP 프로토콜의 Default Port(80) 외에 서비스할 경우에는 포트 번호를 지정합니다. 원본 서버의 보안 정책에 따라 아래 표에 정의한 포트 번호를 사용할 수 있습니다.

    7280-894434885917771080
    1088111114432080700170707612
    77778000-900190909901-990811080-1111012900-1294945002

    ② 원본 위치에서 실제 서비스로 제공될 원본 파일이 위치한 디렉토리 위치를 추가로 지정합니다.

    ③ Global CDN에서 원본 서버로 요청시 전달되는 Host Header 정보를 선택합니다.

    • 원본 서버에 Virtual Host 설정 시 Host 헤더 정보를 참고하여 응답 콘텐츠 제어를 할 수 있습니다. Incoming Host Header는 사용자의 요청 시 전달되는 Host 정보를 원본 요청시에도 사용합니다. 주로 웹 브라우저의 경우에는 서비스 도메인이 Host 헤더가 됩니다.(예시: sample.gcdn.gov-ntruss.com/img.jpg 요청 시 sample.gcdn.gov-ntruss.com이 Host 헤더)
    • Origin Hostname으로 원본 서버에 Virtual Host 설정이 되어 이 도메인에 대해서만 허용할 경우 Origin Hostname 설정을 선택합니다.
    • 기본 설정 값은 서비스 도메인의 ‘Incoming Host Header’ 값을 활용합니다.

    ④ Global CDN의 콘텐츠를 Unique하게 식별할 Cache Key를 선택합니다.

    • 서비스 특성에 따라 적절한 Cackey Key를 선택하면 캐싱 효율이 좋아집니다. 서비스 도메인에 따라 콘텐츠는 개별 Cache Key로 구별됩니다. 서비스 도메인에 따라 전송하는 콘텐츠가 다를 경우, Incoming Host Header 값을 선택합니다.

      예시)
      http://sample.gcdn.gov-ntruss.com/logo.gif의 cache key는 ‘sample.gcdn.gov-ntruss.com’
      http://example.gcdn.gov-ntruss.com/logo.gif의 cache key는 ‘example.gcdn.gov-ntruss.com’ 으로 logo.gif는 다른 콘텐츠로 캐싱
      
    • 서비스 도메인은 다르지만 하나의 원본 Cache Key로 구별됩니다. 서비스의 원본 서버와 전송하는 콘텐츠가 동일하다면 ‘Origin Hostname’으로 설정하는 것이 좋습니다.

      예시)
      http://sample.gcdn.gov-ntruss.com/logo.gif의 cache key는 ‘origin.gcdn.gov-ntruss.com’
      http://example.gcdn.gov-ntruss.com/logo.gif의 cache key는 ‘origin.gcdn.gov-ntruss.com’ 으로 logo.gif는 하나의 콘텐츠로 캐싱
      

    ⑤ 원본의 압축 설정 여부를 선택합니다.

    압축을 할 경우 원본 서버의 트래픽을 줄이고 응답 속도를 개선할 수 있습니다. CDN에서 원본으로 “Accept-Encodgin: gzip” 요청하여 압축된 콘텐츠를 응답 받을 수 있습니다. 원본에서 응답 시 Gzip 압축을 지원한다면 ‘사용’을 선택합니다.

    ⑥ 원본 요청 시 Header를 추가/변경하거나 삭제하여 요청할 수 있습니다.

    • Header의 이름과 값으로 다음의 문자열들은 입력할 수 없습니다 : "(),/:;<=>?@[]{}", 알파벳&숫자 외 문자, 공백(space)
    • Header 값으로 최대 입력할 수 있는 길이는 256byte입니다.
    • 예시) Action: Add, Header Name : NCP-Custom-Header, Header Value : ncp => NCP-Custom-Header: ncp

    캐싱 설정

    Global CDN의 캐싱 만료 시간과 Cache관련 옵션을 설정합니다.

    ① Global CDN의 기본 캐싱 정책을 선택합니다.

    • 기본적으로 캐시 서버에 보관하는 기간은 원본 서버의 ‘Cache-Contorl: max-age=..’나 ‘Expires’ 헤더 값과 동일한 정책을 따르도록 합니다.
    • 원본에서 Cache를 조정하는 헤더를 응답하지 않을 경우 캐시 서버에서 얼마나 보관할 지는 ‘Cache Expiry’ 설정값이 적용됩니다.
    • Cache 선택 시 캐시 서버에서는 ‘Cache Expiry’ 설정한 값이 최대 캐싱 기간으로 적용됩니다.
    • No-store/Bypass Cache 설정들은 CDN 서버에서 캐싱을 하지 않는 옵션으로 모든 요청이 원본을 통해 서비스되어 권고하지 않습니다.

    ② Global CDN에서 원본과 통신이 어려울 경우의 동작 방식을 선택합니다.

    • 원본 서버와 통신이 되지 않았을 때 캐시 서버에 저장되어 있는 콘텐츠를 사용자에게 제공할 수 있습니다. 최신의 유효한 콘텐츠가 아닐수도 있지만 원본 서버의 장애 시에도 서비스가 가능합니다.
    • 원본 서버 장애 시 유효하지 않은 콘텐츠가 전송되는 것이 서비스 영향이 있다면, 항상 원본 서버의 콘텐츠와 비교하여 최신의 유효한 콘텐츠를 제공하도록 선택합니다.

    ③ Cache expiry 설정을 합니다.

    • CDN 캐시 서버에서 캐싱된 콘텐츠가 원본 서버에서 변경되었는지 여부를 확인하는 주기를 지정합니다. 단, 원본 서버의 응답 헤더에 Cache-Control: max-age 존재하면 해당 설정이 우선됩니다. 콘텐츠 업데이트를 자주 하시는 경우에는 짧게 지정하여 설정합니다. 단, 짧게 지정하면 원본의 부하가 늘어나니 주의해서 사용합니다.

    ④ 서비스 요청 시 Query String을 사용할 경우에 대한 Cache 정책을 선택합니다.

    • 원본 서버로 요청 시 사용자 요청의 Query String을 포함할 지 선택할 수 있습니다. 원본 서버에서 Query String에 따라 다른 콘텐츠를 응답할 경우 ‘사용 안함’으로 선택합니다.
    • 원본 서버에서 Query String에 관계없이 동일한 콘텐츠를 응답할 경우 ‘사용’으로 선택하여 캐싱 효율을 높이고 원본 요청과 부하를 줄일 수 있습니다.

    ⑤ 원본에서의 Vary 헤더 응답에 대한 Cache 정책을 선택합니다.

    • 만약 원본 서버에서 ‘Vary’ 헤더를 응답하지만 콘텐츠는 동일하다면 캐싱 효율을 위해 제거하는 것이 좋습니다. 원본에서 Vary 헤더를 응답하더라도 동일한 콘텐츠로 인식하기 위해 캐싱에서 제외할 수 있습니다.
    • 콘텐츠가 다양한 버전으로 가지고 있으며 User-Agent, Referer, Cookie 등의 Vary 요청 헤더에 따라 응답 콘텐츠가 달라질 경우 ‘사용’을 선택합니다.

    ⑥ 대용량 파일을 서비스 할 경우 캐싱 효율을 위해 최적화 전송 옵션을 선택합니다.

    • 대용량 파일을 전송 할 경우 2MB의 청크로 캐싱하며, 사용자가 다운로드를 완료하지 않고 일정 용량 이상이 남아있다면 더 이상 원본으로 요청하지 않아 원본 부하를 감소합니다. 적용을 위해서는 원본에서 Range 응답 설정이 필요합니다. 옵션 활용 시 콘텐츠명을 변경하지 않고 업데이트 할 경우 콘텐츠 정합성을 위해 반드시 Purge 수행이 필요합니다.
    • 확장자는 ‘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’ 대상이며, 용량은 100MB ~ 323GB 사이 콘텐츠에 대해 적용할 수 있습니다.

    Viewer 전송 설정

    Global CDN에서 사용자에게 콘텐츠 전송 시의 제어 옵션을 설정합니다.

    ① Global CDN에서 사용자에게 콘텐츠 전송 시 압축 설정 여부를 선택합니다.

    • 사용자의 User-Agent(브라우저 혹은 Device)가 Gzip/Unzip을 지원할 경우 콘텐츠를 압축하여 사용자에게 전달합니다. 네트웍 품질이 낮은 사용자에게 압축 전송을 하면 응답 속도를 개선할 수 있습니다.

      HTML, JavaScript, 혹은 Text 기반의 10KB 이상 콘텐츠에 적용하는 것이 효과적입니다.

    • 원본 서버에서 콘텐츠 확장자 혹은 요청 헤더에 따라 압축/미압축 응답을 유연하게 적용하기 위해서는 ‘원본의 압축 설정과 동일하게 적용’을 선택합니다.

    • 이미지(jpg, png 등)나 동영상(mp4, flv 등) 혹은 이미 압축이 적용된 콘텐츠는 추가 압축을 적용하지 않는 것이 좋습니다. 이미 압축된 포맷의 콘텐츠만 서비스할 경우 사용안함을 선택합니다.

    • 압축 전송 사용 시, 대상 콘텐츠는 아래의 Mime Type에 적용됩니다.

      Text/html*, text/css*, application/x-javascript*, application/javascript*
      

    ② 사용자 요청 시 레퍼러에 따라 접근제어를 설정합니다.

    • 지정한 도메인의 레퍼러가 포함되거나 레퍼러가 없는 요청에 대한 접근 제어를 설정할 수 있습니다. 도메인 기반의 설정이므로 특수문자는 “*”, “-“, “_”가 허용되며, 와일드카드(*) 사용 시 하위 도메인에 대해서도 포함하여 접근제어 설정됩니다.
    • 기본적으로 레퍼러가 없는 경우에 대해서도 콘텐츠를 허용합니다. 등록한 레퍼러에 대해서만 허용하려면 '허용 안함'을 선택하세요.

    ③ Secure Token을 활용하여 허용된 요청에만 콘텐츠를 응답할 경우 선택합니다.

    • Secure Token은 일회성으로 Access Token을 생성하여 콘텐츠 요청 시 인증을 통과한 요청에만 콘텐츠를 응답합니다.
    • "인증 예외 대상 확장자"에 설정한 확장자는 인증 token 없이 콘텐츠 호출/응답이 가능합니다.
    • "원본에 Token 전달하는 확장자"에 설정한 확장자는 CDN 캐시 서버를 통해 원본서버 요청 시 token 값을 전달합니다. Live Station의 미디어 연관 서비스를 활용 시 사용합니다.
    Token 생성의 Parameter 정보
    • Token명 : 'token' 값으로 생성이 필요합니다.
    • Start(st)/End times(exp) : 인증 token이 유효한 시작/종료 시간입니다.
    • Key : Security Token 설정 시 발급되는 key 값으로 생성이 필요합니다.
    • ACL(Acess Control List) : token으로 일회성 접근 허용 대상 URI 입니다. * 문자를 통해 특정 Path 단위로 설정이 가능합니다.
    • JAVA 언어를 사용한 인증 Token 생성방법

      1. Java SDK를 활용하여 token 생성하는 코드를 작성합니다. (Sample Code)
      package com.akamai.edgeauth;
      
      public class ExampleEdgeAuth {
         public static void main(String[] args) {
           String hostname = "example.cdn.ntruss.com";   // 서비스 도메인명
           String ET_ENCRYPTION_KEY = "b2b1";            // token을 생성하기 위한 key
           String tokenName = "token";                   // 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();
           }
         }
      }
      
      1. Java 수행하여 생성된 Request URL 생성 예제입니다.
      http://example.cdn.ntruss.com/sample.pdf?token=st=1592202370~exp=1592205970~acl=/sample.pdf*~hmac=d422a548ae769bbaddc1d27f03fe6e096a4ba492928f3eb9c09824f93d78f507
      
    • Python 언어를 사용한 인증 Token 생성방법

      1. Git에서 제공한 파일로 Token을 생성합니다. (Sample Code)
      $ 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
      
      1. 생성한 Token을 포함한 최종 Request URL 생성 예제입니다.
      http://example.cdn.ntruss.com/sample.pdf?token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779
      
    • ST(startTime) 값에 관한 유의 사항 : 고객의 Token 생성 서버의 시간이 CDN Edge 서버의 시간보다 2~4 초 정도 빠를 경우, Edge 서버에서 토큰의 시작시간(st 값)이 “too early”로 인식되어 인증이 실패하는 경우가 발생할 수 있습니다. 이러한 경우를 방지하기 위하여, Token 생성하는 Method를 호출할 때 start_time 값을 현재시간 보다 10 초 빠르게 설정하고, end_time 값을 10 초 만큼 늘리는 것을 권장합니다. 무엇보다도 Token 생성을 하는 웹서버의 시간을 NTP로 정확하게 동기화하는 것이 중요합니다.

    ④ 사용자 응답 시 Header를 추가/변경하거나 삭제하여 응딥할 수 있습니다.

    • Header의 이름과 값으로 다음의 문자열들은 입력할 수 없습니다 : "(),/:;<=>?@[]{}", 알파벳&숫자 외 문자, 공백(space)
    • Header 값으로 최대 입력할 수 있는 길이는 256byte입니다.
    • 예시) Action: Add, Header Name : Access-Control-Allow-Origin, Header Value : * => 'Access-Control-Allow-Origin: *'의 CORS 헤더를 Edge에서 응답하도록 설정 가능합니다

    Global CDN 신청

    서비스, 원본, 캐싱, 전송 설정이 완료되면 [CDN 신청] 버튼을 클릭합니다.
    신청을 취소하고자 할 경우 [취소] 버튼을 클릭합니다.

    • CDN 신청 후 글로벌 거점에 모두 구성되기까지 약 2시간 이상이 소요됩니다.
    • 구성이 완료되면 ‘신청중’에서 ‘운영중’으로 상태가 변경됩니다.

    Global CDN 사용을 위한 도메인 등록

    • 네이버 클라우드 플랫폼에서 제공하는 도메인으로 사용할 경우에는 해당하지 않습니다.
    • 고객 보유 도메인을 서비스 도메인으로 신청한 경우, Global CDN을 신청하면 CDN 도메인 확인이 가능합니다.
    • 반드시 운영하는 DNS 시스템 혹은 호스팅 업체에서 네이버 클라우드 플랫폼[공공기관용] 도메인을 CNAME 설정해야 서비스에 사용할 수 있습니다.

    예시)

    • 고객 도메인 : sample.example.com

    • 네이버 클라우드 플랫폼[공공기관용] 도메인 : example.gcdn.gov-ntruss.com

      sample.navercdn.com	600	IN CNAME	example.gcdn.gov-ntruss.com.
      

    networking-7-8_ko.png

    Global CDN 관리하기

    설정 변경

    CDN 신청 시 설정한 내용을 변경할 수 있습니다.

    ① 설정을 변경할 CDN 서비스를 선택합니다.

    ② 상단의 [설정변경] 버튼을 클릭합니다.

    ③ 서비스 이름을 제외한 나머지 항목의 설정 변경이 가능합니다. 변경 사항에 대한 입력/선택이 완료되면 적용합니다.

    참고

    고객 도메인 사용 시 추가/삭제/변경 시 설정 적용을 위한 Global CDN 배포에 1시간 이상이 소요됩니다.

    Purge

    Purge는 캐시 서버에 저장된 콘텐츠를 삭제하는 기능으로 Global CDN에서 제공하는 고속 Purge를 이용할 수 있습니다.

    networking-7-11_ko.png

    ① Purge 수행할 CDN 서비스를 선택합니다.

    ② 상단의 [Purge] 버튼을 클릭합니다.

    ③ 서비스의 모든 콘텐츠를 대상으로 한번에 Purge를 진행하는 ‘전체파일’과 특정 콘텐츠들만 Purge를 진행하는 ‘파일 직접 입력’ 중에 선택하여 적용합니다. 전체 파일에 대한 Purge는 최대 1시간이 소요될 수 있습니다.

    ④ 하나의 CDN 서비스에서 여러 개의 도메인을 운영하고 Cache Key가 Incoming Host Header의 경우 “파일 직접 입력” 선택 시 Purge를 적용할 도메인을 선택하여 진행합니다. 1개 혹은 여러 개 도메인의 다중 선택이 가능합니다.

    Purge 로그

    Purge를 수행한 이력을 확인할 수 있습니다.

    ① Purge 이력을 확인할 CDN 서비스를 선택합니다.

    ②상단의 [Purge 로그] 버튼을 클릭합니다.

    ③ 최근 5회 동안 적용된 내역을 확인할 수 있습니다. 그러나 파일명이 잘못 입력된 경우에도 Purge는 성공으로 표시됩니다.

    CDN 일시 정지

    일시적으로 CDN 콘텐츠 전송을 중지할 수 있습니다.

    ① 일시 정지할 CDN 서비스를 선택합니다.

    ② 상단의 [일시 정지] 버튼을 클릭합니다.

    ③ 글로벌 거점에 대한 배포로 일시 정지까지 약 1시간 이상이 소요되며 일시정지가 완료되면 리스트에서 상태가 ‘운영중’에서 ‘정지’로 변경됩니다.

    참고

    고객 도메인 사용 시 도메인이 많을 경우 설정 적용을 위한 Global CDN 배포에 1시간 이상이 소요됩니다.

    CDN 재시작/해지

    일시적으로 콘텐츠 전송을 중지했던 CDN 서비스를 재시작하거나 해지할 수 있습니다.
    상태가 ‘정지‘ 상태일 때만 수행 가능합니다.

    ① ‘정지’ 상태에서 재시작 또는 해지할 CDN 서비스를 선택합니다.

    ② 상단의 [재시작] 또는 [CDN 해지] 버튼을 클릭합니다.

    ③ 재시작 또는 CDN 해지에는 약 1시간 이상이 소요되며 재시작이 완료되면 리스트에서 상태가 ‘정지’에서 ‘운영중’으로 변경됩니다. 해지가 완료되면 리스트에서 사라집니다.

    참고

    고객 도메인 사용 시 도메인이 많을 경우 설정 적용을 위한 Global CDN 배포에 1시간 이상이 소요됩니다.

    모니터링

    모니터링 선택

    조회할 대상 서비스 이름과 기간을 선택하여 전송량, 요청수, Cache Hit율, 응답 코드의 통계 그래프를 확인할 수 있습니다.
    Global 캐시 서버로부터 데이터를 수집/가공의 통계 지연으로 약 12시간의 데이터는 정확하지 않을 수 있습니다.
    모니터링 데이터 조회 기간 선택은 최소 1일부터 최대 3개월까지 가능하며, 조회 기간에 따른 데이터 분석 주기는 다음과 같습니다.

    • 한달 이내 : 30분 주기
    • 한달 이상 : 1시간 주기

    networking-7-15_ko.png

    모니터링 항목

    networking-7-16_ko.png

    networking-7-17_ko.png

    ① 트래픽(Mbps): Global CDN을 통해 전송된 데이터의 네트워크 대역폭

    ② 전송량(Bytes) : Global CDN을 통해 전송된 데이터의 전송량 (서비스 이용요금 산정의 기준)

    ③ 요청수(건) : Global CDN으로 인입된 서비스 요청 수

    ④ 요청수 대비 Cache Hit(%): Global CDN의 요청 수와 원본으로 인입 된 요청수의 비율, Hit율이 높을 수록 캐시 서버 내 캐싱 콘텐츠 재사용이 높고 원본으로의 요청과 원본 부하가 감소됨

    ⑤ 응답 코드(건) : Global CDN에서 사용자에게 응답한 코드(2xx, 3xx, 4xx, 5xx) 별 수

    통계

    전송량과 요청수의 통계 데이터로 Global CDN 사용량을 확인할 수 있습니다.
    조회 월의 1일~현재까지의 사용량 데이터를 확인할 수 있습니다.

    • 월 서비스 요금에 대한 데이터 취합 기준 안내
      • (전전월의 마지막 일 – 3일) 부터 (전월의 마지막 일 – 4일)까지의 월 전송량 및 요청수 데이터의 합
      • (예시) 5월 서비스 요금 내역= 3월 28일부터 4월 26일까지의 전송량 및 요청수의 합
      • 자세한 내용은 Global CDN 요금 안내를 참고하시기 바랍니다.

    networking-7-18_ko.png

    통계 항목

    networking-7-19_ko.png

    ① 트래픽(Mbps): Global CDN을 통해 전송된 데이터의 네트워크 대역폭

    ② 전송량(Bytes) : Global CDN을 통해 전송된 데이터의 전송량 (서비스 이용요금 산정의 기준)

    ③ 요청수(건) : Global CDN으로 인입된 서비스 요청 수

    Log

    CDN으로 요청 온 Log를 나타냅니다. Log를 확인할 수 있는 기능은 제공하고 있지 않으며, 서비스 문의를 통해 Log를 요청할 수 있습니다.

    • 1시간 간격으로 요청된 Log 데이터를 압축 포맷(gz)으로 저장합니다.

    • 저장되는 Log의 형태는 아래와 같으며, 각 항목은 공백으로 구분합니다. 데이터가 없는 경우에는 "-"으로 표시합니다.

      예시)
      211.249.40.9 - - [09/Feb/2018:03:50:01 +0000] "GET /nrbjdrlsuogw479257.gcdn.gov-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" "-"
      
    항목설명
    client_ipClient IP
    - -미사용 값 (-)
    [date]요청 일자/시간
    "http_method arl_stem HTTP/1.1"http 요청 method와 URI, HTTP 버전
    status_code응답코드 (2xx, 3xx, 4xx 등)
    total_bytes서버에서 Client에 응답한 전체 용량(bytes)
    "referrer"요청시 referer
    "user_agent"Client의 user-agent
    "cookie"요청시 cookie 값

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

    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.