Alibaba Cloud CDN は、グローバルに分散されたキャッシュを使用して Object Storage Service (OSS) を高速化します。OSS(画像、音声、動画、ドキュメントなどの静的リソース)から世界中のユーザーへコンテンツを配信する際、Alibaba Cloud CDN を使用することで、アクセス速度を大幅に向上させ、遅延を低減し、トラフィックコストを削減できます。
仕組み
CDN は、分散型キャッシュアーキテクチャを使用して OSS へのアクセスを高速化します。このアーキテクチャでは、OSS バケット(オリジン)の静的コンテンツが、グローバルに分散された CDN エッジノードにキャッシュされます。ユーザーに最も近いノードからコンテンツを配信することで、遅延を最小限に抑えます。
-
リクエストルーティング:ユーザーがリソースを初めてリクエストすると、インテリジェント DNS 解決により、ネットワークパフォーマンスが最適な最寄りの CDN ノードにリクエストがルーティングされます。
-
オリジンフェッチ:CDN ノードがローカルキャッシュにリソースが存在しないことを検出した場合、オリジンフェッチリクエストを OSS オリジンに送信します。
-
キャッシュ:OSS がコンテンツを返すと、CDN ノードは事前定義されたキャッシュルールに従ってリソースをキャッシュし、ユーザーに返します。
-
キャッシュヒット:同じリソースに対する後続のリクエストでは、CDN ノードがキャッシュから直接コンテンツを提供するため、オリジンフェッチリクエストが不要になります。このプロセスにより、アクセスパスが短縮され、ネットワーク遅延が減少し、オリジンへの負荷が軽減されるため、アクセスが高速化されます。
クイックスタート
前提条件
-
登録済みのドメインをお持ちの場合、または新しいドメインを購入できます。Alibaba Cloud 以外で登録されたドメインもサポートされています。
-
加速リージョンに中国本土が含まれる場合、ドメインにはICP 登録が必要です。
ステップ 1:ドメインの追加とオリジンの構成
-
CDN コンソールに移動し、ドメイン名を追加 をクリックします。
-
アクセラレーションリージョン と ビジネスタイプ を選択し、ドメイン を入力します。加速ドメインは、ルートドメイン(例:
example.com)またはカスタムサブドメイン(例:oss.example.com)のいずれかです。管理とスケーラビリティを考慮し、サブドメインの使用を推奨します。 -
[オリジンの追加] をクリックします。オリジン情報 で、OSS ドメイン名 を選択し、ターゲットバケットのドメイン名を選択して、OK をクリックしてオリジンサーバーを追加します。
-
次へ をクリックして、加速ドメインの追加を完了します。
加速ドメインを追加した後、[推奨構成] ウィザードに従って、キャッシュ有効期限、オリジンへの範囲リクエスト、HTTPS 証明書などの基本構成を設定できます。または、[スキップして後で構成] をクリックして、CNAME 構成に直接進むことも可能です。
ステップ 2:CNAME レコードの構成
DNS 設定に CNAME レコードを追加して、加速ドメインを CDN が割り当てた CNAME アドレスにマッピングします。これにより、ユーザーのリクエストが CDN エッジノードにルーティングされます。以下の例は、Alibaba Cloud DNS コンソールでの CNAME レコード構成方法を示しています。
-
DNS コンソールに移動します。ターゲットドメインの Actions 列で、解決設定 をクリックします。
-
Add Record をクリックし、以下の情報を入力します。その他の設定はデフォルト値のままにしてください。
パラメーター
説明
レコードタイプ
CNAME を選択します。
ホストレコード
ルートドメインの場合は
@を、サブドメインの場合はプレフィックス(例:oss)を入力します。これは加速ドメインに基づきます。レコード値
ウィザードページまたは加速ドメイン一覧ページで提供された CNAME 値(例:
oss.example.com.w.cdngslb.com)を入力します。 -
OK をクリックし、画面の指示に従ってレコードを追加します。
DNS レコードの伝搬時間は、TTL(Time-to-Live)設定に依存します。完全な伝搬には数分から数時間かかる場合があります。構成直後にドメインにアクセスできないことがあります。DNS レコードが伝搬するまで待つか、ローカル DNS キャッシュをクリアしてみてください。
ステップ 3:プライベートバケットのオリジンフェッチ構成
デフォルトでは、新規バケットはプライベートです。CDN がプライベートバケットにアクセスできるようにするには、プライベートバケットのオリジンフェッチ機能を有効化してください。バケットにパブリック読み取り権限が設定されている場合、CDN は直接アクセスできるため、この機能を有効化する必要はありません。
-
CDN コンソールで、ターゲットドメインをクリックします。左側のナビゲーションウィンドウで、Back-to-Origin 設定 をクリックします。
-
OSS 非公開バケットへのアクセス セクションで、機能を有効化します。[オリジンタイプ] で、[同一アカウントでのオリジンフェッチ] を選択します。
プライベートバケットのオリジンフェッチを有効化すると、CDN がプライベートバケットにアクセスする権限が付与され、オリジンフェッチリクエストに自動的に署名情報が追加されます。そのため、クライアントは 署名パラメーターを含まない URL(例:http://example.com/example.jpg)を使用する必要があります。URL に Expires や Signature などの署名パラメーターが含まれている場合、OSS 認証が失敗し、403 エラーが返されます。
ステップ 4:高速化の検証
構成が完了したら、比較テストを実行して、加速ドメインのパフォーマンス向上を確認します。
-
ファイルアクセス URL の取得:
URL タイプ
方法
デフォルト OSS アクセス URL
[バケット一覧] に移動し、ターゲットバケットを選択します。ターゲットファイルの [操作] 列で、詳細 をクリックし、その後 オブジェクト URL のコピー をクリックします。
CDN 加速アクセス URL
加速ドメインとファイル名を使用して URL を構築します(例:
http://example.com/example.jpg)。ただし、署名パラメーターを含めないでください。 -
高速化の検証:CloudMonitor 使い捨て検出ツール などのスピードテストツールまたはプラットフォームを使用して、同じファイルの 2 つの URL の読み込み時間を比較します。
説明最初のテストでは高速化効果が不明瞭な場合があります。これは、CDN ノードがオリジンサーバーからリソースをフェッチする必要があるためです。リソースが CDN ノードにキャッシュされた後、再度テストしてください。
-
キャッシュヒットステータスの確認:ブラウザーの開発者ツール(F12)を使用して、レスポンスヘッダー内の
X-Cacheフィールドの値を確認します。値
説明
HITで始まるキャッシュヒットを示します。リクエストは CDN キャッシュから提供され、アクセスが高速化されました。
MISSで始まるキャッシュミスを示します。リクエストは CDN キャッシュから提供されず、OSS オリジンサーバーに転送されてリソースが取得されました。
利用シーン
動画および大容量ファイルの高速化
ビデオ・オン・デマンド (VOD) や大容量ファイルのダウンロードにおいて良好なユーザーエクスペリエンスを確保するには、特別な構成が必要です。
必須構成
-
Range GET の有効化:加速ドメイン名に対して範囲ベースのオリジンフェッチを有効化します。これにより、CDN エッジノードが大容量ファイルをチャンク単位でリクエストでき、動画のシークや再開可能なダウンロードがサポートされます。
-
適切なキャッシュ TTL の構成:動画ファイルは通常、頻繁に更新されません。キャッシュ TTL を長め(例:30 日以上)に設定して、頻繁なオリジンフェッチを削減します。
-
リソースプリフェッチの使用:動画を公開する前に、CDN のリソースのリフレッシュとプリフェッチ機能を使用して、動画をエッジノードに配信します。
動画ビットレートの推奨値
動画の読み込み速度はビットレートと密接に関係しています。ユーザーから動画再生が途切れたりカクついたりするとの報告がある場合は、動画のビットレートを確認してください。
|
ビットレート範囲 |
ユースケース |
説明 |
|
500~2,000 kbps |
モバイル端末、標準解像度 |
スムーズな読み込みに推奨される範囲です。 |
|
2,000~4,000 kbps |
PC、高解像度 |
ユーザーの十分な帯域幅が必要です。 |
|
>6,000 kbps |
超高精細 (UHD)/4K |
読み込みが遅くなる可能性があります。複数のビットレートバージョンを提供してください。 |
動画のビットレートが高すぎる(10 Mbps 超)場合、CDN 高速化を使用していても読み込みが遅くなる可能性があります。動画トランスコーディングサービスを使用してビットレートを下げたり、アダプティブビットレートストリーミングを提供したりしてください。
マルチバケットオリジン構成
異なるリソースタイプに対して複数の OSS バケットを使用するアーキテクチャの場合、以下のいずれかの方法でマルチオリジンフェッチを構成できます。
方法 1:個別のサブドメインアーキテクチャ
機能やリソースタイプごとに意味のある個別のサブドメインをバケットに割り当て、各サブドメインに対して個別に CDN 高速化を構成します。
|
リソースタイプ |
サブドメインの例 |
推奨構成 |
|
画像リソース |
|
長期キャッシュポリシーを構成してアクセス速度を向上させます。 |
|
音声および動画リソース |
|
再開可能なダウンロードをサポートするために、範囲ベースのオリジンフェッチを有効化します。 |
|
機密文書 |
|
セキュリティを確保するために、URL 認証を個別に有効化します。 |
個別のサブドメインアーキテクチャを使用すると、以下のメリットがあります。
-
意味のあるサブドメインにより、開発チームが識別および保守しやすくなります。
-
トラフィックが DNS レベルで分散されるため、単一ドメインの同時接続制限を回避できます。
-
各バケットに独自のキャッシュポリシー、セキュリティ構成、モニタリングアラートを設定できます。
-
個別のモニタリングにより、パフォーマンスボトルネックや異常なトラフィックを特定しやすくなります。
方法 2:パスベースルーティングによる統合ドメイン
異なるサービスのバケットへの統合アクセスポイントを提供するには、単一の加速ドメイン名を構成し、ルールエンジンを使用して、リクエストパスに基づいて特定のバケットにリクエストをルーティングします。この例では、加速ドメイン名 oss.example.com を構成して、2 つのバケット cdn-bucket1 および cdn-bucket2 からコンテンツをフェッチする方法を示します。
-
オリジン情報の追加:加速ドメイン名の オリジンサイト情報 に
cdn-bucket1およびcdn-bucket2を追加し、ドメインの CNAME 解決を構成します。 -
パスルールの追加:加速ドメイン名について、 に移動して、それぞれ
http://oss.example.com/bucket1/*およびhttp://oss.example.com/bucket2/*に一致する 2 つの URL パスルールを作成します。ルール名
タイプ
一致演算子
一致値
bucket1(カスタマイズ可能)
URI
いずれかを含む
/bucket1/*bucket2(カスタマイズ可能)
URI
いずれかを含む
/bucket2/* -
条件付きオリジンの追加:基本設定 で、条件付き配信元の追加 オプションを使用して、パスルールを対応するオリジンに関連付けます。
ルール条件
配信元アドレス
bucket1
cdn-bucket1.oss-<region-id>.aliyuncs.combucket2
cdn-bucket2.oss-<region-id>.aliyuncs.com -
オリジン Host ヘッダーの指定:Back-to-Origin 設定 で、[オリジン HOST の指定] オプションを使用して、オリジンフェッチリクエストがターゲットバケットに正しくルーティングされるようにします。
配信元サーバーのタイプ
配信元アドレス
オリジン HOST タイプ
Back-to-Origin ホスト
ルール条件
プライマリオリジンアドレス
cdn-bucket1.oss-<region-id>.aliyuncs.comプライマリオリジンドメイン
cdn-bucket1.oss-<region-id>.aliyuncs.combucket1
プライマリオリジンアドレス
cdn-bucket2.oss-<region-id>.aliyuncs.comプライマリオリジンドメイン
cdn-bucket2.oss-<region-id>.aliyuncs.combucket2
-
オリジン URL の書き換え:Back-to-Origin 設定 で、back-to-origin Path の書き換え ルールを追加します。このルールにより、オリジンフェッチ時に仮想パス(例:
/bucket1)が削除され、オブジェクトの実際の保存パスに一致します。書き換えのパス
変更後のパス
フラグ
^/bucket1/(.*)$/$1break
^/bucket2/(.*)$/$1break
-
構成の検証:構成を完了後、単一の加速ドメイン名を使用して、パスに基づいて異なる OSS バケットからリソースにアクセスできます。たとえば、
http://oss.example.com/bucket1/example.jpgへのリクエストは、cdn-bucket1バケットのルートディレクトリにあるexample.jpgファイルをフェッチします。
クロスアカウントプライベートオリジンフェッチ
別のアカウントのプライベートバケットからコンテンツをフェッチする必要がある場合(例:アカウント A の加速ドメイン名を使用してアカウント B のバケットにアクセス)、加速ドメイン名に対して OSS 非公開バケットへのアクセス を有効化し、クロスアカウントオプションを選択できます。
-
クロスアカウントバケットをオリジンとして追加:新しい加速ドメイン名のオリジン情報を追加する際、[カスタム OSS オリジン] を選択し、ターゲットバケットのドメイン名を入力します。
-
クロスアカウントプライベートオリジンフェッチの有効化:加速ドメイン名の Back-to-Origin 設定 で、OSS 非公開バケットへのアクセス を有効化します。リダイレクトタイプ で、[クロスアカウントまたは同一アカウントでのオリジンフェッチ] を選択し、ターゲットバケットへのアクセス権限を持つアカウントの AccessKey ID および AccessKey Secret を入力します。
本番環境に適用
ベストプラクティス
安全な通信:HTTPS の有効化
クライアントと CDN ノード間のデータ転送を暗号化するには、加速ドメイン名に対してHTTPS 証明書を構成し、強制 HTTPS リダイレクトを有効化してください。HTTPS は、転送中のデータが盗まれたり改ざんされたりするのを防ぐだけでなく、ブラウザーのセキュリティ警告を回避し、ユーザーの信頼とブランドイメージを高めます。
証明書構成場所
|
アクセス方法 |
構成場所 |
説明 |
|
OSS ドメイン名への直接アクセス |
OSS コンソール |
バケットの セクション内。 |
|
CDN 加速ドメイン名経由でのアクセス |
CDN コンソール |
高速化ドメイン名の HTTPS 設定 セクション内。 |
-
ワイルドカード証明書(例:
*.example.com)は、第 2 レベルのサブドメインにのみ一致します。第 3 レベルのサブドメイン(例:img.cdn.example.com)には、別途証明書を申請する必要があります。 -
OSS は HTTP/2 プロトコルをサポートしていません。HTTP/2 を使用するには、CDN 経由でアクセスを高速化する必要があります。
パフォーマンス最適化:キャッシュポリシーの構成
キャッシュポリシーは CDN パフォーマンスにとって極めて重要であり、キャッシュ期間とパラメーター処理の両方をカバーする必要があります。
キャッシュ有効期限の設定
CDN キャッシュ有効期限ルールを構成して、キャッシュヒット率を最大化します。
|
タイプ |
推奨キャッシュ期間 |
説明 |
|
更新頻度の低い静的ファイル(画像、音声、動画、インストールパッケージ) |
1 ヶ月以上 |
不要なオリジンリクエストを削減します。 |
|
更新頻度の高い静的ファイル(JS、CSS) |
数時間~数日 |
バージョン管理(例: |
|
動的ファイルまたは API(PHP、JSP) |
0 秒(キャッシュしない) |
すべてのリクエストで最新のコンテンツが取得されることを保証します。 |
画像処理を有効にするためのパラメーター処理の構成
リサイズ、トリミング、ウォーターマークなどの機能を含む OSS 画像処理は頻繁に使用されます。デフォルトでは、CDN はキャッシュヒット率を最大化するためにすべてのパラメーターをフィルタリングするため、?x-oss-process などの画像処理命令が無効になります。この機能を使用するには、CDN コンソールの加速ドメイン名の パフォーマンスの最適化 セクションで、パラメーターフィルタリング 設定を変更する必要があります。
|
シナリオ |
パラメーターフィルタリング |
説明 |
|
純粋な静的リソース配信 |
すべてのパラメーターをフィルタリング |
キャッシュヒット率を最大化します。 |
|
OSS 画像処理の使用 |
すべてのパラメーターを保持、または指定パラメーターを保持: |
画像処理命令が有効になることを保証します。 |
|
バージョン管理されたリソース |
指定パラメーターを保持: |
バージョン番号に基づくキャッシュ更新をサポートします。 |
可用性:プリフェッチと自動更新の使用
キャッシュを有効化した後、オリジンファイルの更新はすぐに CDN エッジノードに反映されません。以下の戦略を使用してください。
-
プリフェッチ:新規リリースやプロモーションイベントの前に、CDN のリソースのリフレッシュとプリフェッチ機能を使用して、人気のあるリソースを世界中のエッジノードに配信します。これにより、ローンチ時にオリジンへのリクエストが急増して圧倒されるのを防ぎます。
-
自動キャッシュ更新:バケットの セクションで、バインドされたドメインの自動 CDN キャッシュ更新を有効化します。API を使用して OSS ファイルを更新すると、OSS が自動的に CDN 更新タスクをトリガーします。
自動キャッシュ更新は、CDN サービスと OSS バケットが同じ Alibaba Cloud アカウントに属している場合にのみ有効です。即時更新を保証するものではありません。時間に敏感なシナリオでは、ファイルを更新した後、CDN 更新機能を使用して手動でキャッシュを更新することを推奨します。
クロスオリジンアクセス:CORS ポリシーの構成
フロントエンドアプリケーションが CDN で高速化された OSS リソースにクロスオリジンリクエストを行う必要がある場合、OSS バケットにのみ構成された CORS ルールは、CDN キャッシュの影響で機能しない可能性があります。ベストプラクティスは、CDN レベルで直接 CORS 関連のレスポンスヘッダーを構成することです。
-
CDN コンソールで、加速ドメイン名をクリックするか、[操作] 列の 管理 をクリックします。
-
タブで、レスポンスヘッダーのパラメーターと値を構成します。
応答ヘッダー
応答ヘッダー値
CORS
Access-Control-Allow-Origin
*
有効
Access-Control-Allow-Methods
POST, GET, HEAD, PUT, DELETE
該当なし
Access-Control-Max-Age
3600
該当なし
説明パラメーター設定は参考用です。実際のビジネスシナリオに基づいて調整してください。
パフォーマンス最適化:大容量ファイルおよびデータ転送の改善
-
Range オリジンフェッチの有効化:ビデオ・オン・デマンドや大容量ファイル配信などのシナリオでは、Range オリジンフェッチを構成することが極めて重要です。この機能により、CDN ノードが大容量ファイルをチャンク単位でリクエストでき、動画のシークなどの高度な機能を有効にし、オリジントラフィックとファーストビュー遅延を大幅に削減できます。
-
データ転送の最適化:JS、CSS、HTML などのテキストベースのファイルの転送サイズを削減するために、CDN コンソールで Gzip 圧縮 または ページ最適化 を有効化できます。
-
ページ最適化または Gzip 圧縮を有効化すると、ファイルの
Content-LengthおよびContent-MD5値が変更されます。アプリケーションロジックがこれらの値に依存して検証を行う場合、これらの機能を慎重に使用してください。 -
ページ最適化と Gzip 圧縮の両方を有効化した場合、Gzip 圧縮のみが有効になります。
スムーズなロールアウト:ゼロダウンタイムドメイン切り替え
既存のサービスを OSS バケットドメインから加速ドメイン名に切り替える際は、段階的なアプローチを採用してください。
-
準備フェーズ:加速ドメイン名のすべての構成を完了し、ステージング環境で機能とパフォーマンスを徹底的にテストします。
-
カナリアリリースフェーズ(オフピーク時間帯での実施を推奨):カナリアリリースを使用して、トラフィックの一部を加速ドメイン名に切り替え、リスクを軽減しながら徐々にトラフィック量を増やします。
-
検証フェーズ:アクセスログとエラー率を綿密に監視します。応答時間や成功率などの主要メトリックを分析して、サービスが正常に機能していることを確認します。
-
フルリリースフェーズ:徹底的な検証後、すべてのトラフィックを加速ドメイン名に切り替えます。
-
ロールバック計画:問題が発生した場合は、直ちにバケットドメインにロールバックし、根本原因を分析した後、再デプロイします。
リスク防止
ホットリンク保護:Referer および URL 認証の構成
不正な Web サイトによるリソースのホットリンクを防止し、不要なトラフィックコストや帯域幅消費を回避するには、セキュリティポリシーを構成する必要があります。
-
Referer ベースのホットリンク保護:HTTP リクエストヘッダーの Referer フィールドを検証して、指定されたドメインからのみアクセスを許可するため、Referer ホワイトリストまたはブラックリストを構成します。
-
URL 認証:プライベート OSS バケットの場合、プライベートバケットのオリジンフェッチを有効化すると、CDN ノードがアクセスできるようになります。つまり、以前は署名が必要だったプライベートリソースが、CDN ドメイン経由で公開アクセス可能になります。これらのリソースに対するセキュリティ制御を復元するには、CDN レベルでURL 認証を構成してください。
CDN 高速化を有効化した後、ホットリンクリクエストがオリジンに到達せずに CDN キャッシュに直接ヒットする可能性があり、OSS ホットリンク保護をバイパスする恐れがあります。保護を確実に有効にするには、CDN レベルでもホットリンク保護ルールを構成する必要があります。
トラフィック異常の監視
Cloud Monitor で加速ドメイン名のアラートルールを作成して、CDN トラフィックの異常な急増を迅速に検出します。
オリジンセキュリティ:SNI およびホストの構成
CDN と OSS 間の安定的かつ安全な通信を確保することは、サービス可用性にとって極めて重要です。
オリジン SNI の構成
サーバ名表示(SNI)を含まないオリジンリクエストが OSS へのアクセス障害を引き起こすのを防ぐために、CDN でデフォルトのオリジン SNI を構成する必要があります。SNI は、オリジンフェッチホスト(デフォルトでは加速ドメイン名)と一致するように設定します。オリジンリクエストに SNI が含まれている場合、OSS は TLS ハンドシェイク中にビジネスドメインを識別し、一致する証明書を返します。OSS が SNI を含まないリクエストを受信した場合、ビジネスドメインを正確に識別できず、より厳しいトラフィック制限がトリガーされる可能性があります。
オリジン情報の非表示
デフォルトでは、CDN はオリジンリクエストにバケットドメインを使用します。オリジンエラー(例:ファイルが見つからない)が発生した場合、エラーメッセージに OSS バケットドメインが公開される可能性があり、セキュリティリスクとなります。この情報を非表示にするには、オリジンフェッチホストを加速ドメイン名に変更します。
-
[バケット] ページで、ターゲットバケットをクリックします。次に、 セクションで、加速ドメイン名をバケットにバインドします。
-
CDN コンソールで、ターゲット加速ドメイン名をクリックします。次に、 セクションで、変更 をクリックし、ドメインタイプ を ドメイン名 に変更します。
監査およびトラブルシューティング:アクセスログの有効化
本番環境では、セキュリティ監査、パフォーマンス分析、トラブルシューティングのための包括的なロギング機能が必要です。CDN コンソールでリアルタイムログ配信を構成して、アクセスログを Log Service に送信します。Log Service を使用して、アクセス動作、トラフィック分布、人気リソース、リクエストエラーについて詳細な分析を行い、アラートを設定できます。
課金
|
料金タイプ |
説明 |
|
CDN 料金 |
CDN を構成して OSS アクセスを高速化すると、CDN トラフィック料金が発生します。詳細については、「CDN 課金概要」をご参照ください。 |
|
OSS 料金 |
CDN ノードでキャッシュミスが発生すると、OSS からリソースをプルするため、CDN back-to-origin アウトバウンドトラフィック料金が発生します。詳細については、「CDN back-to-origin アウトバウンドトラフィック」をご参照ください。 |
よくある質問
CDN オリジンフェッチ時の 5xx エラー
5xx エラーは、CDN が OSS オリジンサーバーからリソースを取得できないことを示します。トラブルシューティングを行うには、以下を確認してください。
|
項目 |
説明 |
|
オリジンサーバー構成 |
CDN コンソールで構成された OSS オリジンサーバーアドレスが正しいことを確認します。 |
|
オリジンフェッチプロトコル |
CDN が HTTPS オリジンフェッチまたはプロトコル追従オリジンフェッチに構成されている場合、オリジンサーバーが HTTPS をサポートしており、SSL 証明書が正しく構成されていることを確認します。 |
|
ネットワーク接続 |
CDN ノードまたはローカルマシンから OSS オリジンサーバーへのネットワーク接続をテストします。CDN ノードはパブリックであるため、オリジンサーバーはパブリックにアクセス可能である必要があります。 |
|
オリジンサーバー負荷 |
CDN リアルタイムモニタリング ページで、帯域幅とトラフィックの急激な増加がないか確認します。頻繁にアクセスされるリソースについては、リソースをプリフェッチし、適切なキャッシュ有効期限ルールを設定してください。 |
CDN を使用した静的 Web サイトでの 403 エラー
原因:この問題は通常、静的 Web サイトホスティング が構成されたプライベートバケットに対して CDN 高速化を有効化した場合に発生します。根本的な原因は、2 つのアクセスメカニズムの競合です。
-
プライベートバケットへのオリジンフェッチリクエストの場合、CDN は認証署名を含めます。
-
OSS 静的 Web サイトホスティングのデフォルトページ機能(例:
/にアクセスした際にindex.htmlを返す)には、匿名 リクエストが必要です。
ユーザーが加速ドメインのルートディレクトリにアクセスすると、CDN は署名付きリクエストをバケットのルートディレクトリに送信します。OSS は署名付きリクエストに対して静的 Web サイトホスティングロジックをトリガーしません。代わりに、ListObjects 操作を試行し、結果として 403 エラーが返されます。
解決策:OSS 静的 Web サイトホスティングメカニズムをバイパスし、CDN でURL 書き換えルールを構成して同じ動作を実現します。
|
パラメーター |
値 |
|
書き換えのパス |
|
|
変更後のパス |
|
|
フラグ |
リダイレクト |
CDN ドメイン経由でのファイルアップロード
セキュリティ上の理由から、CDN ドメイン名経由で OSS にファイルをアップロードすることは推奨されません。CDN がパブリック書き込みアクセスに構成されている場合、誰でも認証なしに OSS にファイルをアップロードでき、バケットが悪意のあるアップロードやデータ改ざんに対して脆弱になります。OSS ドメイン名を使用してファイルをアップロードし、最小権限の原則を適用することを推奨します。
CDN による OSS トラフィックの削減
はい。CDN キャッシュされたファイルのキャッシュヒット率が高い場合、OSS アウトバウンドトラフィックは大幅に減少し、OSS トラフィックコストを削減できます。
これは、Web サイト訪問、画像ダウンロード、ゲーム配信など、同じデータが繰り返しアクセスされるシナリオで最も効果的です。キャッシュヒット率が高ければ高いほど、オリジンフェッチトラフィックが少なくなり、コスト削減効果が大きくなります。
ファイルアクセスリクエストの追跡
CDN 高速化を有効化した後、OSS アクセスログには CDN キャッシュから直接提供されたリクエストは記録されません。以下の方法でリクエストを追跡できます。
|
データ範囲 |
方法 |
|
過去 30 日間のログデータ |
CDN オフラインログ をダウンロードして分析します。 |
|
30 日以上前のログデータ |
CDN でリアルタイムログ配信を構成した後、CDN リアルタイムログデータ統計 ページでデータを表示および分析します。 |
403 Forbidden エラーのトラブルシューティング
403 Forbidden エラーは、OSS または CDN のアクセス制御によって引き起こされる可能性があります。原因を特定するには、まずデフォルトの OSS ドメイン名を使用してリソースに直接アクセスしてみてください。
-
リクエストが成功した場合:問題は CDN 側にあります。Referer ベースのホットリンク保護、URL 認証、プライベートバケットのオリジンフェッチ設定などの CDN 構成を確認してください。
-
リクエストも 403 エラーを返した場合:問題は OSS 側にあります。バケット ACL、Referer ベースのホットリンク保護、バケットポリシーなどの OSS 構成を確認してください。
CDN 移行後の OSS トラフィックコスト
考えられる原因:
-
一部のリクエストが依然として OSS に直接アクセスしている:アプリケーションコードまたはサードパーティ統合に、CDN 加速ドメイン名に置き換えられていない OSS ドメイン名が含まれていないか確認します。
-
キャッシュミスによりオリジンフェッチリクエストが発生している:キャッシュミスが発生するたびにオリジンフェッチリクエストがトリガーされ、OSS back-to-origin トラフィックが生成されます。CDN キャッシュヒット率を確認し、低い場合はキャッシュ構成を最適化してください。
-
パブリック読み取り権限を持つバケットが悪意のあるアクセスを受けている:バケットにパブリック読み取り権限が設定されている場合、悪意のあるアクセスに対して脆弱です。ビジネス要件が許す場合は、バケットをプライベートに設定し、CDN でプライベートバケットのオリジンフェッチを有効化することを推奨します。