CDNの申し込み

Prev Next

Classic/VPC環境で利用できます。

NAVERクラウドプラットフォームコンソールで CDNサービスを申し込む方法を説明します。

CDNの申し込み

Global CDNサービス新たに申し込む方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Content Delivery > Global CDNメニューを順にクリックします。
  2. **[CDNの申し込み] **ボタンをクリックします。
  3. 次のステップを順に行います。

1. サービス設定

サービス名、プロトコル、ドメインなどの CDNサービスと関連したプロパティを設定します。設定する項目は次の通りです。

項目 説明
サービス名 サービスを区別する固有名を入力
  • 3~35文字の英数字、ハイフン(-)を使用して入力
サービスプロトコル CDNサービスで使用するプロトコルの設定
  • HTTP/HTTPS/ALLの中から選択
  • HTTPS選択時にソースサーバからも HTTPSに通信必要
  • 顧客が保有する別途のドメインの使用時に HTTPのみサポート
サービスドメイン クライアントがアクセスする CDNドメインの設定
  • CDNドメインを使用する: NAVERクラウドプラットフォームの CDNドメインを使用
    • 自動作成: 「任意の ID.gcdn.ntruss.com」の形式に自動作成
    • 直接入力: 「入力値.gcdn.ntruss.com」の形式に作成。入力値は英数字、ハイフン(-)を使用して、40文字以内で入力
  • 顧客保有ドメインの使用: NAVERクラウドプラットフォームが提供するドメインではなく、顧客が保有するドメインを使用。使用するドメインを直接入力
Access Log CDNに流入されるリクエスト情報ログを 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": リクエスト時の 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: NAVERクラウドプラットフォームの 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 Header CDNからソースサーバにリクエストする場合に転送されるホストヘッダを設定。ソースが 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 コンテンツの固有 IDのキャッシュキーを設定。サービス特性に応じて適切に選択すると、キャッシュ効率が向上。
  • 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(ソースリクエスト) ソースのリクエスト時にヘッダを追加/変更/削除してリクエストするように設定。ソースに対するアクセスの制御目的で活用可能。
  • ヘッダ値は最大256byteまで入力可能
  • 使用できない文字列: "(),/:;<=>?@[]{}"、英数字以外の文字、空白
    例) 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-AgentRefererCookieなどの Varyリクエストヘッダによって他のコンテンツをレスポンスする場合に使用しない
Large File Optimization 大容量ファイルをサービスする場合、キャッシュの効率のための最適化転送有無を選択
  • 100MB以上のファイル転送時に2MB単位ずつキャッシュ
  • サポート拡張子: 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
  • 機能を使用するには、ソースサーバで Rangeレスポンスの設定が必要
  • コンテンツ名を変更せずに更新するには、パージ実行後に更新が必要

4. Viewer転送設定

CDNキャッシュサーバからユーザーにコンテンツを転送する場合に適用するプロパティを設定します。設定する項目は次の通りです。

項目 説明
Gzip Compression クライアントにコンテンツを転送する場合、圧縮転送の有無を選択
  • ソースサーバでコンテンツの拡張子またはリクエストヘッダによって柔軟に適用するには、ソースの圧縮設定と同様に適用を選択
  • クライアントのエージェント(ブラウザまたはデバイス)で Gzip/Unzipのサポートが必要。HTML、JavaScript、Textベースの10KB以上のコンテンツをサービスする場合に使用することをおすすめ。
  • 画像(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(ユーザーレスポンス) レスポンス時にヘッダを追加/変更/削除してレスポンスするように設定
  • ヘッダ値は最大256byteまで入力可能
  • 使用できない文字列: "(),/:;<=>?@[]{}"、英数字以外の文字、空白
    例) Action: Add / Header Name: Access-Control-Allow-Origin / Header Value: *

認証トークン作成

Security Tokenを使用する場合、以下の内容を参照して認証トークンを作成します。

  • トークンは言語別に提供される SDKを通じて作成できます。
  • トークン作成に必要なパラメータは、次の通りです。
    • トークン名: 「token」に一括適用
    • Start(st)/End times(exp): トークンが有効な開始/終了時間
    • Key: Security Token設定時に自動で発行され、認証パスワードとして表示される値
    • ACL(Access 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.