- 인쇄
- PDF
CDN 신청
- 인쇄
- PDF
Classic/VPC 환경에서 이용 가능합니다.
네이버 클라우드 플랫폼 콘솔에서 CDN 서비스를 신청하는 방법을 설명합니다.
CDN 신청
Global CDN 서비스를 새로 신청하는 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼 콘솔의 Region 메뉴와 Platform 메뉴에서 이용 중인 환경을 클릭해 주십시오.
- Services > Content Delivery > Global CDN 메뉴를 차례대로 클릭해 주십시오.
- [CDN 신청] 버튼을 클릭해 주십시오.
- 다음 단계를 차례대로 진행해 주십시오.
1. 서비스 설정
서비스 이름, 프로토콜, 도메인 등 CDN 서비스와 관련된 속성을 설정해 주십시오. 설정하는 항목은 다음과 같습니다.
항목 | 설명 |
---|---|
서비스 이름 | 서비스를 구별할 고유의 이름 입력
|
서비스 프로토콜 | CDN 서비스에서 사용할 프로토콜 설정
|
서비스 도메인 | 클라이언트가 접근하는 CDN 도메인 설정
|
Access Log | CDN에 유입되는 요청 정보 로그를 Object Storage 안에 저장할지 여부 선택
|
설명 | 필요 시 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 서비스를 이용할 콘텐츠 원본의 위치 지정
|
원본 경로(선택) | 실제 콘텐츠 원본이 위치한 상세 디렉터리 입력. 원본 위치 전체 경로가 아닌 특정 경로를 사용할 경우에만 추가로 지정.
|
Forward Host Header | CDN에서 원본 서버로 요청할 때 전달되는 호스트 헤더 설정. 원본 위치가 Object Storage일 경우 Origin Hostname만 설정 가능.
|
Cache Key Hostname | 콘텐츠의 고유 식별자인 캐시 키 설정. 서비스 특성에 따라 적절하게 선택 시 캐싱 효율 향상.
|
Gzip Compression | 콘텐츠의 압축 전송 여부 선택
|
Custom Header (원본요청) | 원본 요청 시 헤더를 추가/변경/삭제하여 요청하도록 설정. 원본에 대한 접근 제어 목적으로 활용 가능.
|
유효 인증 기관(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 | 기본적인 캐시 정책 설정
|
Force Revalidation of Stale Objects | 원본 서버와 통신이 어려울 경우, 캐싱된 콘텐츠의 제공 여부 선택
|
Cache expiry | 캐싱된 콘텐츠와 원본을 비교하여 변경 여부를 확인하는 주기 지정
|
Ignore Query String | 원본 서버에 콘텐츠 요청 시 클라이언트 요청문의 쿼리 문자열을 무시할지 여부 선택. 캐싱 효율을 위해 사용 가능.
|
Remove Vary Header | 원본에서 Vary 헤더를 응답할 경우 헤더의 삭제 여부 선택. 캐싱 효율을 위해 사용 가능.
|
Large File Optimization | 대용량 파일을 서비스할 때 캐싱 효율을 위한 최적화 전송 여부 선택
|
4. Viewer 전송 설정
CDN 캐시 서버에서 사용자에게 콘텐츠를 전송할 때 적용할 속성을 설정해 주십시오. 설정하는 항목은 다음과 같습니다.
항목 | 설명 |
---|---|
Gzip Compression | 클라이언트에게 콘텐츠 전송 시 압축 전송 여부 선택
|
Referrer Domain | 특정 도메인 레퍼러가 포함된 요청만 응답하도록 설정. 접근 제어 목적으로 활용.
|
Security Token | 토큰 인증으로 허용된 요청만 응답하도록 설정
|
Custom Header (사용자 응답) | 응답 시 헤더를 추가/변경/삭제하여 응답하도록 설정
|
인증 토큰 생성
Security Token 사용 시 다음의 내용을 참고하여 인증 토큰을 생성해 주십시오.
- 토큰은 언어별로 제공되는 SDK를 통해 생성할 수 있습니다.
- Python: https://github.com/akamai/EdgeAuth-Token-Python
- Java: https://github.com/akamai/EdgeAuth-Token-Java
- Ruby: https://github.com/akamai/EdgeAuth-Token-Ruby
- NodeJS: https://github.com/akamai/EdgeAuth-Token-Node
- Golang: https://github.com/mobilerider/EdgeAuth-Token-Golang
- C#: 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(); } } }
- 코드 실행 후 생성된 요청 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
- Java로 인증 토큰 생성
사용자의 토큰 생성 서버의 시간이 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.