CDN の申し込み
    • PDF

    CDN の申し込み

    • PDF

    Article Summary

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

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

    CDNの申し込み

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

    1. NAVERクラウドプラットフォームコンソールの Region メニューや Platform メニューから利用中の環境をクリックします。
    2. Services > Content Delivery > Global CDN メニューを順にクリックします。
    3. [CDNの申し込み] ボタンをクリックします。
    4. 次のステップを順に行います。

    1. サービス設定

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

    項目説明
    サービス名サービスを区別する固有名を入力
    • 英数字、ハイフン(-)を使用して、3~35文字以内で入力
    サービスプロトコルCDNサービスで使用するプロトコルの設定
    • HTTP/HTTPS/ALLの中から選択
    • HTTPS選択時にソースサーバからも HTTPに通信必要
    • 顧客が保有する別途のドメインの使用時に HTTPのみサポート
    サービスドメインクライアントがアクセスする CDNドメインの設定
    • CDNドメインを使用する: NAVERクラウドプラットフォームの CDNドメインを使用
      • 自動作成: 「任意の Id.gcdn.ntruss.com」の形式に自動作成直接入力
      • 直接入力: 「入力値.gcdn.ntruss.com」の形式に作成。入力値は英数字、ハイフン(-)を使用して、40文字以内で入力
    • 顧客保有ドメインの使用: NAVERクラウドプラットフォームが提供するドメインではなく、顧客が保有するドメインを使用。使用する別途のドメインを直接入力
    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: 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 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コンテンツの固有 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.
      

    この記事は役に立ちましたか?

    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.