静的 Web サイトとは、HTML や CSS などの形式の画像や small ファイルを含む、静的オブジェクトで主に構成される Web サイトのことです。静的 Web サイトホスティング機能を使用すると、Object Storage Service (OSS) バケットで静的 Web サイトをホストし、バケットのドメイン名を使用して Web サイトにアクセスできます。
背景情報
デフォルトホームページと 404 ページ
静的 Web サイトホスティング機能を有効にする場合は、Web サイトのデフォルトホームページとデフォルト 404 ページを指定する必要があります。
デフォルトホームページは、ブラウザを使用して OSS バケットでホストされている静的 Web サイトにアクセスすると表示されます。
デフォルト 404 ページは、OSS によって返されるエラーページです。ブラウザを使用して OSS バケットでホストされている静的 Web サイトにアクセスし、404 エラーが発生した場合、OSS はデフォルト 404 ページを返します。
ブラウザの動作
データセキュリティを確保するため、中国本土のリージョンでは 2018 年 9 月 28 日から、中国本土以外のリージョンでは 2019 年 9 月 25 日から、MIME タイプが text/html で、名前拡張子が HTM、HTML、JSP、PLG、HTX、または STM である静的 Web ページオブジェクトにブラウザを使用してアクセスする場合、次の制限が有効になります。
デフォルトの OSS ドメイン名を使用して静的 Web ページオブジェクトにアクセスすると、次のヘッダーが応答に自動的に追加されます。Content-Disposition:attachment。ブラウザを使用してオブジェクトにアクセスすると、オブジェクトは添付ファイルとしてダウンロードされます。
カスタムドメイン名を使用して、特定の形式で Web ページオブジェクトをプレビューできるブラウザを使用して静的 Web ページオブジェクトにアクセスすると、オブジェクトのコンテンツがプレビューされます。
課金
静的 Web サイトホスティング機能を使用すると、以下の料金が発生する場合があります。
ストレージ料金
HTML、CSS、JavaScript、画像などの静的 Web ページオブジェクトの保存に使用されるストレージ容量に基づいて課金されます。詳細については、「ストレージ料金」をご参照ください。
トラフィック料金
静的 Web サイトへのアクセス時に発生するアウトバウンドトラフィック (デフォルトホームページ、画像、スクリプトなどのすべての静的リソースを含む) と、デフォルト 404 ページが返されたときに発生するアウトバウンドトラフィック。詳細については、「トラフィック料金」をご参照ください。
API 操作呼び出し料金
デフォルトホームページ、その他のページ、静的リソース、およびデフォルト 404 ページにアクセスするために OSS に GET リクエストを送信すると、課金されます。詳細については、「リクエスト料金」をご参照ください。
例
バケットで静的 Web サイトをホストした後、デフォルトホームページと同じ名前のオブジェクトをバケットにアップロードする必要があります。例: index.html。バケットに subdir/ という名前のディレクトリがある場合は、index.html オブジェクトをディレクトリにアップロードする必要があります。さらに、デフォルト 404 ページと同じ名前のオブジェクトをバケットにアップロードする必要があります。例: error.html。次のセクションは、サンプルバケット内のオブジェクトとディレクトリの構造を示しています。
Bucket
├── index.html
├── error.html
├── example.txt
└── subdir/
└── index.html
この例では、カスタムドメイン名 example.com
がバケットにバインドされ、バケットでホストされている静的 Web サイトのデフォルトホームページは index.html で、Web サイトのデフォルト 404 ページは error.html です。カスタムドメイン名を使用して静的 Web サイトにアクセスすると、OSS は、Web サイトをホストするバケットの静的ページの構成に基づいて異なる応答を返します。
[サブフォルダホームページ] が無効になっている場合:
https://example.com/ と https://example.com/subdir/ にアクセスすると、OSS は https://example.com/index.html を返します。
https://example.com/example.txt にアクセスすると、example.txt オブジェクトが取得されます。
https://example.com/object にアクセスすると、object オブジェクトが存在しない場合、OSS は https://example.com/error.html を返します。
[サブフォルダホームページ] が有効になっている場合:
https://example.com/ にアクセスすると、OSS は https://example.com/index.html を返します。
https://example.com/subdir/ にアクセスすると、OSS は https://example.com/subdir/index.html を返します。
https://example.com/example.txt にアクセスすると、example.txt オブジェクトが取得されます。
https://example.com/object にアクセスすると、object オブジェクトが存在しないため、[サブフォルダ 404 ルール] の構成に基づいて、OSS は次のいずれかの応答を返します。
[サブフォルダ 404 ルール] がデフォルト値の [リダイレクト] に設定されている場合、OSS は object/index.html が存在するかどうかを引き続き確認します。 object/index.html が存在する場合、OSS は HTTP ステータスコード 302 を返し、リクエストを https://example.com/object/index.html にリダイレクトします。 object/index.html が存在しない場合、OSS は HTTP ステータスコード 404 を返し、https://example.com/error.html が存在するかどうかを確認します。
[サブフォルダ 404 ルール] が [NoSuchKey] に設定されている場合、OSS は HTTP ステータスコード 404 を返し、https://example.com/error.html が存在するかどうかを確認します。
[サブフォルダ 404 ルール] が [インデックス] に設定されている場合、OSS は object/index.html オブジェクトが存在するかどうかを引き続き確認します。オブジェクトが存在する場合、OSS は HTTP ステータスコード 200 とオブジェクトのコンテンツを返します。オブジェクトが存在しない場合、OSS は https://example.com/error.html が存在するかどうかを確認します。
前提条件
デフォルトホームページと 404 ページとして指定するオブジェクトは、バケットのルートディレクトリに保存し、パブリックアクセスを許可する必要があります。 [サブフォルダホームページ] を有効にする場合は、オブジェクトをサブディレクトリにも保存する必要があります。
指定されたオブジェクトへのパブリックアクセスを許可するには、オブジェクトのアクセス制御リスト (ACL) を public-read
に設定する必要があります。詳細については、「オブジェクトの ACL を構成する」をご参照ください。
方法
OSS SDK を使用する
ossutil を使用する
関連 API 操作
上記で説明したメソッドは、基本的に RESTful API に基づいて実装されています。ビジネスで高度なカスタマイズが必要な場合は、RESTful API を直接呼び出すことができます。 API を直接呼び出すには、コードに署名計算を含める必要があります。詳細については、「PutBucketWebsite」をご参照ください。
よくある質問
バケットに対して有効にした静的 Web サイトホスティング機能を無効にすることはできますか?
参考資料
OSS バケットで静的 Web サイトをホストし、バケットにバインドされているカスタムドメイン名を使用してユーザーが Web サイトにアクセスできるようにすることができます。例: example.com。詳細については、「カスタムドメイン名を使用して静的 Web サイトホスティングを構成する」をご参照ください。
React と静的 Web サイトホスティング機能を使用して、フロントエンドでシングルページアプリケーション (SPA) を構築できます。詳細については、「チュートリアル: 静的 Web サイトホスティングを使用してシングルページアプリケーションを構築する」をご参照ください。