--- title: "CDN 신청" slug: "globalcdn-create" tags: ["CDN", "Global CDN"] updated: 2026-09-17T09:07:38Z published: 2026-09-17T09:07:38Z canonical: "guide.ncloud-docs.com/globalcdn-create" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # CDN 신청 Classic/VPC 환경에서 이용 가능합니다. 네이버 클라우드 플랫폼 콘솔에서 CDN 서비스를 신청하는 방법을 설명합니다. ## CDN 신청 Global CDN 서비스를 새로 신청하는 방법은 다음과 같습니다. 1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Content Delivery** > **Global CDN** 메뉴를 차례대로 클릭해 주십시오. 2. **[CDN 신청]** 버튼을 클릭해 주십시오. 3. 다음 단계를 차례대로 진행해 주십시오. - [1. 서비스 설정](/docs/globalcdn-create#1%EC%84%9C%EB%B9%84%EC%8A%A4%EC%84%A4%EC%A0%95) - [2. 원본 설정](/docs/globalcdn-create#2%EC%9B%90%EB%B3%B8%EC%84%A4%EC%A0%95) - [3. 캐싱 설정](/docs/globalcdn-create#3%EC%BA%90%EC%8B%B1%EC%84%A4%EC%A0%95) - [4. Viewer 전송 설정](/docs/globalcdn-create#4Viewer%EC%A0%84%EC%86%A1%EC%84%A4%EC%A0%95) - [5. 확인](/docs/globalcdn-create#5%ED%99%95%EC%9D%B8) ### 1. 서비스 설정 서비스 이름, 프로토콜, 도메인 등 CDN 서비스와 관련된 속성을 설정해 주십시오. 설정하는 항목은 다음과 같습니다. | 항목 | 설명 | | --- | --- | | **서비스 이름** | 서비스를 구별할 고유의 이름 입력 - 3~35자로 영어, 숫자, 하이픈(-)을 사용하여 입력 | | **서비스 프로토콜** | CDN 서비스에서 사용할 프로토콜 설정 - **HTTP**/**HTTPS**/**ALL** 중에서 선택 - HTTPS 선택 시 원본 서버에서도 HTTPS로 통신 필요 - 고객이 보유한 별도의 도메인 사용 시 HTTP만 지원 | | **서비스 도메인** | 클라이언트가 접근하는 CDN 도메인 설정 - **CDN 도메인 사용**: 네이버 클라우드 플랫폼의 CDN 도메인 사용 - **자동생성**: '임의 ID.gcdn.ntruss.com' 형태로 자동 생성 - **직접입력**: '입력값.gcdn.ntruss.com' 형태로 생성. 입력값은 영어, 숫자, 하이픈(-)을 사용해 40자 이내로 입력 - **고객 보유 도메인 사용**: 네이버 클라우드 플랫폼이 제공하는 도메인이 아닌 고객이 보유한 별도의 도메인 사용. 사용할 도메인을 직접 입력 - 최대 50개의 도메인 지원 - 다수의 도메인 입력 시 줄바꿈으로 구분 - CDN 신청 후, 운영 중인 DNS 시스템 혹은 호스팅 업체에서 [네이버 클라우드 플랫폼 도메인을 CNAME 설정](/docs/globalcdn-create#CDN%EC%82%AC%EC%9A%A9%EC%9D%84%EC%9C%84%ED%95%9C%EA%B3%A0%EA%B0%9DDNS%EC%84%A4%EC%A0%95) 필요 | | **Access Log** | CDN에 유입되는 요청 정보 로그를 Object Storage 안에 저장할지 여부 선택 - **사용** 선택 시 이용할 Object Storage의 리전과 버킷 선택 - 로그 데이터는 매시 20분마다 1시간 간격으로 저장되며, 버킷 내 '서비스명_인스턴스 ID_YYYYMMDD_HH.log.gz' 형식으로 저장 - 최초 로그 수집 시 일정 시간(최대 24시간) 소요 | | **설명** | 필요 시 CDN에 대한 간단한 메모 입력 | 참고 - 로그 저장 기능 사용 시 Object Storage의 이용 신청 및 버킷 생성이 완료되어 있어야 합니다. 서비스 이용에 대한 자세한 설명은 [Object Storage 사용 가이드](/docs/storage-storage-6-1)를 참고해 주십시오. - 로그 파일은 여러 항목을 포함하며, 각 항목은 공백으로 구분됩니다. 데이터가 없는 경우에는 "-"로 표시됩니다. - 로그 파일 포맷 `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. 원본 설정 주의 Object Storage를 Global CDN에 연동하는 경우, **공개되서는 안되는 정보를 Object Storage 버킷에 저장**해서는 안됩니다. 콘텐츠 원본의 위치를 지정하고, 원본 서버와 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)' 공격을 예방하기 위해 원본의 인증서 유효 여부 확인. 유효성이 확인되는 인증 기관의 목록은 [유효 인증 기관](/docs/globalcdn-create#%EC%9C%A0%ED%9A%A8%EC%9D%B8%EC%A6%9D%EA%B8%B0%EA%B4%80CertificateAuthority) 참고. | | **원본 경로(선택)** | 실제 콘텐츠 원본이 위치한 상세 디렉터리 입력. 원본 위치 전체 경로가 아닌 특정 경로를 사용할 경우에만 추가로 지정. - '/base_directory_name' 형식으로 입력 - 최하위 디렉터리에는 '/' 생략 | | **Forward Host Header** | CDN에서 원본 서버로 요청할 때 전달되는 호스트 헤더 설정. 원본 위치가 Object Storage일 경우 **Origin Hostname**만 설정 가능. - **Incoming Host Header**: 클라이언트 요청 시 전달된 호스트 헤더를 그대로 사용. 서비스 도메인의 호스트 헤더 기반. 서비스 프로토콜로 HTTP를 선택하고 콘텐츠 원본이 외부에 위치한 경우 선택 가능. - **Origin Hostname**: 원본 서버가 특정 가상 호스트만 수신하도록 설정된 경우, 그 호스트 헤더를 사용. - **Custom Value**: 호스트 헤더를 사용자 지정값으로 설정. 호스트 헤더값을 직접 입력. | | **Cache Key Hostname** | 콘텐츠의 고유 식별자인 캐시 키 설정. 서비스 특성에 따라 적절하게 선택 시 캐싱 효율 향상. - **Incoming Host Header**: 도메인명에 따라 콘텐츠를 개별적인 캐시 키로 구분. 서비스 도메인에 따라 전송하는 콘텐츠가 다를 경우 선택. - **Origin Hostname**: 도메인명이 달라도 동일한 캐시 키로 식별. 서비스 원본 서버와 전송하는 콘텐츠가 동일할 경우 선택. | | **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]** 키를 눌러 등록. - 토큰을 생성하는 방법에 대한 자세한 설명은 [인증 토큰 생성](/docs/globalcdn-create#%EC%9D%B8%EC%A6%9D%ED%86%A0%ED%81%B0%EC%83%9D%EC%84%B1) 참고 | | **Custom Header (사용자 응답)** | 응답 시 헤더를 추가/변경/삭제하여 응답하도록 설정 - 헤더 값은 최대 256 bytes까지 입력 가능 - 사용 불가한 문자열: "(),/:;<=>?@[]{}", 알파벳 또는 숫자 외의 문자, 공백 <예시> **Action**: Add / **Header Name**: Access-Control-Allow-Origin / **Header Value**: * | #### 인증 토큰 생성 **Security Token** 사용 시 다음의 내용을 참고하여 인증 토큰을 생성해 주십시오. - 토큰은 언어별로 제공되는 SDK를 통해 생성할 수 있습니다. - Python: [https://github.com/akamai/EdgeAuth-Token-Python](https://github.com/akamai/EdgeAuth-Token-Python) - Java: [https://github.com/akamai/EdgeAuth-Token-Java](https://github.com/akamai/EdgeAuth-Token-Java) - Ruby: [https://github.com/akamai/EdgeAuth-Token-Ruby](https://github.com/akamai/EdgeAuth-Token-Ruby) - NodeJS: [https://github.com/akamai/EdgeAuth-Token-Node](https://github.com/akamai/EdgeAuth-Token-Node) - Golang: [https://github.com/mobilerider/EdgeAuth-Token-Golang](https://github.com/mobilerider/EdgeAuth-Token-Golang) - C#: [https://github.com/BookBeat/EdgeAuth-Token-CSharp](https://github.com/BookBeat/EdgeAuth-Token-CSharp) - 토큰 생성에 필요한 파라미터는 다음과 같습니다. - 토큰명: '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(); } } } ``` ``` http://example.cdn.ntruss.com/sample.pdf?token=st=1592202370~exp=1592205970~acl=/sample.pdf*~hmac=d422a548ae769bbaddc1d27f03fe6e096a4ba492928f3eb9c09824f93d78f507 ``` - 토큰 생성 샘플 코드 - 코드 실행 후 생성된 요청 URL - 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 ``` ``` http://example.cdn.ntruss.com/sample.pdf?token=st=1592204787~exp=1592208387~acl=/sample.pdf*~hmac=79872098f16596c8c40ebab649ae2aac8cce3e3bece204b641c99b6cfac42779 ``` - 토큰 생성 샘플 코드 - 코드 실행 후 생성된 요청 URL 참고 사용자의 토큰 생성 서버의 시간이 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. ```