Content Delivery Network (CDN) を使用して、Object Storage Service (OSS) バケットからの静的リソースを高速化します。この設定では、OSS がオリジンサーバーとして機能します。CDN は世界中の Points of Presence (POP) にファイルをキャッシュするため、ユーザーは最も近いノードからコンテンツを取得できます。これにより、待機時間が大幅に短縮され、オリジンサーバーの負荷が軽減されます。
メリット
Alibaba Cloud OSS は低コストのストレージを提供し、CDN は静的リソースの配信を高速化します。CDN のオリジンサーバーとして OSS を使用すると、次のメリットがあります。
CDN はリソースに対するすべてのユーザーリクエストをルーティングするため、オリジンサーバーの負荷が軽減されます。
CDN トラフィックの単価は、OSS に直接アクセスする場合のインターネット経由のアウトバウンドトラフィックよりも低くなります。
クライアントは最寄りの CDN POP からリソースをフェッチするため、ネットワーク伝送が短縮され、待機時間が短縮されます。
技術アーキテクチャ
CDN は OSS のキャッシュレイヤーとして機能します。ユーザーがリソースをリクエストすると、リクエストはまず最寄りの CDN POP に到達します。
キャッシュヒット: POP がリクエストされたリソースをキャッシュしている場合、リソースを直接ユーザーに返し、応答時間を短縮します。
キャッシュミス: POP がリクエストされたリソースをキャッシュしていない場合、リクエストをオリジンサーバー (OSS バケット) に転送してリソースをフェッチします。その後、POP はリソースをユーザーに返し、将来のリクエストのためにコピーをキャッシュします。
課金
CDN のアウトバウンドトラフィックおよび OSS から CDN へのオリジントラフィックに対して料金が発生する場合があります。詳細については、「OSS コンテンツ高速化の課金」をご参照ください。
開始する前に
Alibaba Cloud アカウントにサインアップし、ID 検証を完了していること。
OSS を有効化し、リソースをアップロードしていること。
有効なドメイン名を持っていること。
中国本土でリソースを高速化するには、まずICP 登録プロセスを完了してください。
手順
ステップ 1: CDN にドメイン名を追加し、OSS に関連付ける
CDN コンソールで高速化用のドメイン名を追加し、オリジンサーバーとして OSS バケットに関連付けます。
CDN コンソールにログインし、[ドメイン名] ページに移動します。
ドメイン名の追加 をクリックし、基本情報を設定します。
ドメイン:
www.example.comなど、インターネットにコンテンツを提供するためのドメイン名。アクセラレーションリージョン: 主要なユーザーベースに最も近いリージョン。
ビジネスタイプ: リソースタイプ。たとえば、20 MB 未満の画像や小さい Web ファイルの場合は、[画像と小さいファイル] を選択します。
[オリジンサーバーの追加] をクリックし、OSS 情報を入力します。
オリジン情報: [OSS ドメイン]。
ドメイン名: ドロップダウンリストからターゲット OSS バケットのパブリックエンドポイントを選択します。

[OK] をクリックし、次に [次へ] をクリックして、推奨される CDN 機能を設定します。
ステップ 2: コア高速化ポリシーを設定する (推奨機能)
推奨機能ウィザードに従って、キャッシュの有効期限、Range back-to-origin、および URL パラメーターの無視を設定します。これらの設定により、CDN のキャッシュヒット率、アクセスパフォーマンス、およびセキュリティが向上します。
2.1 キャッシュの有効期限を設定する
適切なキャッシュルールは、CDN のパフォーマンスを最大化し、オリジンへの不要なリクエストを削減します。リソースの特性に基づいて、Time-to-Live (TTL) とも呼ばれるキャッシュの有効期限を設定します。最初に一致したルールが有効になります。以下は推奨される設定です。
ファイルタイプ | 拡張子 | TTL | 説明 |
画像/音声/動画 |
| 30 日 | コンテンツは頻繁に変更されません。 |
静的スクリプト |
| 1 時間 | コンテンツはバージョンリリースに伴い頻繁に変更されます。 |
ウェブサイトのホームページ |
| キャッシュなし (0 秒) | ユーザーが常に最新のページ構造を受け取ることを保証します。 |
2.2 パラメーターの無視を設定する
[パラメーターの無視] 機能は、キャッシュキーを生成する際にクエリ文字列 (URL の ? の後の部分) を削除します。これにより、リクエスト URL に異なるパラメーターがあっても同じキャッシュファイルが提供され、キャッシュヒット率が向上し、オリジントラフィックが削減されます。

2.3 Range back-to-origin を有効にする
この機能は、画像のような小さいファイルではなく、音声や動画などの大きいファイルを配信する場合に推奨されます。
[Range back-to-origin] を有効にすると、CDN POP が OSS バケットから大きいファイルをリクエストした場合、OSS は CDN リクエストで指定された範囲に基づいてコンテンツをチャンクで返します。これにより、トラフィック消費とリソースの応答時間が短縮されます。

2.4 OSS ファイルの自動キャッシュ更新を設定する
OSS コンソールの [バケット設定] > [ドメイン名] ページで、ターゲットドメインに対して [カスタムドメイン名のマッピング] と [自動 CDN キャッシュ更新] を有効にします。自動 CDN 更新をトリガーするアクションを選択します。
更新はイベントベースであり、100% 信頼できるものでもリアルタイムでもありません。ネットワークの問題や高トラフィックなどの極端な状況では、リフレッシュイベントが失われる可能性があります。即時更新が必要な場合は、リソースの消去とプリフェッチを使用することをお勧めします。

ステップ 3: DNS 解決を設定および検証する
CDN コンソールの [ドメイン名] ページに移動し、ステップ 1 で追加したドメインを見つけて、その CNAME 値をコピーします。値が空の場合はページを更新してください。

同じ Alibaba Cloud アカウントで DNS コンソールにログインします。[パブリックゾーン] ページで、ドメインを見つけて [設定] をクリックします。
[レコードの追加] をクリックして CNAME レコードを作成します。
レコードタイプ:
CNAME。ホスト名: サブドメインのプレフィックス (例:
www)。レコード値: CDN コンソールからコピーした CNAME 値。
他のパラメーターはデフォルト値のままにして、[OK] をクリックします。

ステップ 4: セキュリティ設定を構成する
4.1 HTTPS を有効にする
HTTPS を使用するには、CDN コンソールでドメインに証明書を追加する必要があります。有効な証明書を追加するまで、ドメインは HTTPS 経由で機能しません。
HTTPS を有効にすると、従量課金の HTTPS リクエストが発生します。これらのリクエストは CDN データ転送パッケージの対象外です。支払い遅延によるサービス停止を防ぐために、アカウントに十分な残高があることを確認するか、HTTPS リクエストパッケージを購入してください。詳細については、「静的 HTTPS リクエスト」をご参照ください。
CDN コンソールの [ドメイン名] ページに移動し、追加したドメインを見つけて、[操作] 列の [管理] をクリックします。
HTTPS 設定 タブを選択し、HTTPS 証明書 セクションで [変更] をクリックします。
HTTPS 設定 ページで、HTTPS セキュアアクセラレーション をオンにし、証明書パラメーターを設定します。
説明Alibaba Cloud Certificate Management Service の証明書をお持ちの場合は、SSL 証明書サービス を選択し、証明書名 ドロップダウンリストから購入した証明書を選択します。証明書が見つからない場合は、証明書にバインドされているドメインが高速化ドメインであるかどうかを確認してください。
サードパーティの証明書を使用している場合は、カスタム証明書 (証明書 + プライベートキー) を選択します。証明書名 を入力し、証明書 (公開鍵) と 秘密鍵 をアップロードする必要があります。これにより、証明書が Alibaba Cloud Certificate Management Service に保存されます。証明書は [マイ証明書] で表示できます。
4.2 プライベートバケットへの CDN アクセスを承認する
OSS バケットがプライベートの場合は、CDN にアクセス権を付与します。そうしないと、権限がないため、すべてのオリジンリクエストが失敗します。
CDN コンソールの [ドメイン名] ページに移動し、追加したドメインを見つけて、[操作] 列の [管理] をクリックします。
Back-to-Origin 設定 セクションで、OSS 非公開バケットへのアクセス をオンにし、[同一アカウント内のバケット] を選択します。クロスアカウントアクセスについては、「プライベート OSS バケットからのオリジンフェッチを設定する」をご参照ください。

4.3 URL 署名を設定する
URL 署名 (タイムスタンプベースのホットリンク保護とも呼ばれます) は、アクセス URL に署名と TTL を追加することで、リソースへの不正アクセスを防止します。CDN はいくつかの署名メソッドを提供します。
4.4 使用量上限を設定する
使用量上限を設定して、ドメインの最大帯域幅、トラフィック、および HTTPS リクエスト数を設定します。これにより、攻撃やリソースの乱用による予期しないトラフィックスパイクによる高額な請求や金銭的損失を防ぐことができます。
4.5 モニタリングとアラートを設定する
リアルタイムモニタリングを設定する
特定のドメインのピーク帯域幅に対してアラートルールを設定します。ピーク帯域幅が設定されたしきい値に達すると、システムは管理者にアラートを送信し、潜在的なリスクにタイムリーに対応できるようにします。
支出アラートを設定する
[課金] > [請求管理] の [利用可能クレジットアラート] 機能を使用して、アカウントの支出を管理します。アカウントの残高が特定の金額を下回ると、指定した連絡先にアラートを送信します。
トラブルシューティング
リクエストが 403 Forbidden を返す
トラブルシューティングの手順
ページのエラーメッセージを確認します。
You don't have permission to access the URL on this serverとdenied by IP ACL = not in whitelistのような理由が含まれている場合は、この情報を使用してブロックしているポリシーを特定します。エラーメッセージが追加の詳細なしで
You don't have permission to access the URL on this serverである場合は、CDN の URL 署名とリモート認証の設定を確認してください。
キャッシュヒット率が低く、オリジンリクエストが頻繁に発生する
トラブルシューティングの手順
同じリソースに対して curl -I コマンドを複数回実行し、Age および X-Cache 応答ヘッダーを確認します。Age: 0 または X-Cache: MISS はキャッシュミスを示します。
解決策
キャッシュルールの TTL が短すぎるか、「キャッシュなし」に設定されています。キャッシュルールの TTL を長くしてください。
[パラメーターの無視] が有効になっていますが、URL にはバージョン管理や画像処理に必要なパラメーター (例:
?v=1.1やx-oss-process) が含まれています。これにより、CDN は URL の異なるバージョンを同じリソースとして扱い、コンテンツエラーや機能の失敗につながります。この場合、[パラメーターの無視] を無効にしてください。オリジンの応答ヘッダー (例:
Cache-Control: no-cache) が CDN にリソースをキャッシュしないように指示しています。オリジンのキャッシュポリシーを調整するか、キャッシュの有効期限を設定する際に [オリジンの No-Cache ヘッダーを無視] を有効にして、CDN がオリジンの no-cache ヘッダーを無視するように設定します。
AccessDenied エラー
トラブルシューティングの手順
エラーメッセージを確認します。You have no right to access this object because of bucket acl の場合、OSS バケットの ACL がプライベートであり、CDN にアクセスを承認していないためにエラーが発生します。
解決策
CDN コンソールの [オリジンフェッチ] ページで、プライベート OSS バケットを有効にします。次に、リソースの消去とプリフェッチ機能を使用して、キャッシュされたエラーを消去します。リンクが更新されると、リソースにアクセスできます。
