Object Storage Service (OSS) のバケットで HTML、CSS、JavaScript などの静的ファイルをホストし、一般にアクセス可能な Web サイトとして提供できます。従来のサーバーは不要なため、運用コストと技術的な複雑さを軽減できます。
標準の静的 Web サイト
企業のホームページや製品紹介ページなど、従来の複数ページの静的 Web サイトをデプロイし、信頼性の高いオンラインアクセスを確保します。
セキュリティ上の理由から、バケットドメイン名を使用して HTML ファイルにアクセスすると、ブラウザーはファイルをオンラインで表示する代わりに強制的にダウンロードします。ユーザーが Web サイトを閲覧できるようにするには、カスタムドメイン名をバインドする必要があります。詳細については、「カスタムドメイン名を使用した OSS へのアクセス」をご参照ください。バケットが中国本土にある場合、カスタムドメイン名には ICP 登録 が必要です。
手順 1:静的 Web サイトホスティングの設定
デフォルトホームページとエラーページを設定し、基本的なアクセスルールを確立します。
-
[バケット] ページに移動し、目的のバケット名をクリックして、左側のナビゲーションペインで をクリックします。
-
[設定] をクリックし、以下のパラメーターを設定します。
-
[デフォルトのホームページ]:
index.htmlに設定します。 -
[サブディレクトリ]:Web サイトの構造に基づいて、サブフォルダに個別のホームページを有効にするかどうかを選択します。
-
無効 (デフォルト):サブフォルダに個別のホームページを必要としない単純な Web サイトに適しています。このオプションでは、フォワードスラッシュ (
/) で終わる URL パスは、ルートディレクトリのデフォルトホームページを返します。 -
有効:各セクションが独自のホームページを持つ、
/blog/や/docs/など、複数の独立したコンテンツセクションで構成される複雑な Web サイトに適しています。有効にした場合、ユーザーが存在しないファイルをリクエストした場合のシステムの応答を定義するために、[ファイル 404 ルール]も設定する必要があります:-
リダイレクト (デフォルト):ディレクトリ URL にリダイレクトします。リクエストされたファイルが存在しない場合、システムは対応するディレクトリにホームページがあるかどうかを確認します。存在する場合、システムは
302リダイレクト応答を返し、ブラウザーのアドレスバーはディレクトリパスに更新されます。たとえば、.../subdirは.../subdir/に変わります。 -
インデックス:ホームページのコンテンツを直接返します。リダイレクトと似ていますが、ホームページが見つかった場合、システムはそのコンテンツを
200ステータスコードで返します。ブラウザーのアドレスバーは変更されません。 -
NoSuchKey:404 エラーを直接返します。これは最も厳格なルールです。リクエストされたファイルが存在しない場合、対応するディレクトリにホームページが存在するかどうかにかかわらず、システムは
404エラーを返します。
-
-
-
[デフォルトの404ページ]:
error.htmlに設定します。 -
[エラーページのステータスコード]:[404] を選択します。
-
-
設定 をクリックします。
手順 2:Web サイトファイルのアップロード
準備した HTML ファイルをバケットにアップロードし、Web サイトのコンテンツを提供します。
-
サンプルファイル html.zip をダウンロードして展開するか、ご自身のプロジェクトファイルを使用します。
-
左側のナビゲーションペインで、 をクリックします。
-
サンプルファイルまたは既存のプロジェクトファイルをアップロードウィンドウにドラッグします。ファイルがリストに追加されたら、アップロード をクリックします。
説明Web サイトのコンテンツを更新する際、同じ名前のオブジェクトをアップロードすると、既存のオブジェクトは直接上書きされます。古いオブジェクトを先に削除する必要はありません。上書きによってオブジェクト全体が置き換えられ、以前のコンテンツは保持されなくなります。バケットでバージョニングが有効になっている場合、上書きによって以前のバージョンは保持され、ロールバックに使用できます。バージョニングが有効でない場合、上書きは元に戻せません。
手順 3:バケット権限の設定
公開読み取り権限を設定して、Web サイトのコンテンツをインターネットユーザーがアクセスできるようにします。
公開読み取り権限を設定すると、バケット内のすべてのオブジェクトがパブリックにアクセス可能になります。URL を知っていれば誰でもオブジェクトをダウンロードできます。そのため、このバケットは HTML、CSS、JavaScript のような公開リソース専用として使用してください。機密データは、より厳格なアクセス制御を持つ別のバケットに保存してください。
-
OSS バケットの作成時、デフォルトでパブリックアクセスブロック機能が有効になっています。この機能が有効になっていると、バケットのアクセス制御リスト (ACL) を公開読み取りまたは公開読み書きに設定できません。まずこの機能を無効にする必要があります。
-
左側のナビゲーションペインで、をクリックします。
-
公開アクセス禁止 トグルをクリックします。表示されたダイアログボックスに アクセス禁止を無効にする と入力し、OK をクリックします。
-
-
バケットのアクセス権限を公開読み取りに設定します。
-
[アクセス制御リスト] タブに移動し、[設定] をクリックします。
-
バケット ACL を [パブリック読み取り] に設定します。表示されるダイアログボックスで、変更する をクリックします。
-
[保存] をクリックします。
-
手順 4:Web サイト設定の確認
Web サイトをテストして、静的 Web サイトホスティング機能が正しく動作していることを確認します。
-
ホームページアクセスの確認:ブラウザーで、カスタムドメイン名 (例:
http://example.com) にアクセスし、結果を確認します。ページに OSS の静的 Web サイトホスティングのデフォルトホームページが表示され、タイトルが「Welcome to OSS」、サブタイトルが「This is a static homepage」であり、下部に 3 つのボタン (Product Details、Product Console、Product Documentation) があれば、静的 Web サイトホスティングの設定は正常に機能しています。
-
404 ページの確認:ブラウザーで、存在しないファイル (例:
http://example.com/missing-object) にアクセスしてみます。ページに「Welcome to OSS」というタイトルと「This is a 404 page」というメッセージが表示されれば、404 エラーページは正しく設定されています。
シングルページアプリケーション (SPA)
クライアントサイドルーティングとページ更新をサポートするシングルページアプリケーション (SPA) をホストできます。
セキュリティ上の理由から、バケットドメイン名を使用して HTML ファイルにアクセスすると、ブラウザーはファイルをオンラインで表示する代わりに強制的にダウンロードします。ユーザーが Web サイトを閲覧できるようにするには、カスタムドメイン名をバインドする必要があります。詳細については、「カスタムドメイン名を使用した OSS へのアクセス」をご参照ください。バケットが中国本土にある場合、カスタムドメイン名にはICP 登録が必要です。
手順 1:SPA ホスティングの設定
クライアントサイドルーティングが正しく機能するように、ホスティングパラメーターを設定します。
-
[バケット] ページに移動し、目的のバケット名をクリックして、左側のナビゲーションペインでをクリックします。
-
[設定] をクリックして、次のパラメーターを設定します。
-
[デフォルトのホームページ]:
index.htmlに設定します。 -
[サブディレクトリ]:[無効]を選択します。この設定では、静的 Web サイトのドメインへのリクエスト、またはそのドメイン下のフォワードスラッシュ (
/) で終わる任意の URL へのリクエストは、ルートディレクトリのデフォルトホームページを返します。 -
[デフォルトの404ページ]:
index.htmlに設定します (重要な設定:すべてのルートをアプリケーションのエントリポイントにリダイレクトします)。 -
[エラーページのステータスコード]:[200] を選択します (ルート遷移時に正しいステータスコードが返されるようにします)。
-
-
設定をクリックします。
手順 2:アプリケーションファイルのアップロード
SPA ファイルをバケットにアップロードして、デプロイを完了します。
-
サンプルアプリケーション demo.zip をダウンロードして展開するか、ご自身のアプリケーションファイルを使用します。
-
左側のナビゲーションペインで、 をクリックします。
-
demoディレクトリのすべてのファイル、またはご自身のアプリケーションファイルをアップロードウィンドウにドラッグします。すべてのファイルがリストに追加されたら、アップロード をクリックします。
手順 3:バケット権限の設定
公開読み取り権限を設定すると、バケット内のすべてのオブジェクトがパブリックにアクセス可能になります。URL を知っていれば誰でもオブジェクトをダウンロードできます。そのため、このバケットは HTML、CSS、JavaScript のような公開リソース専用として使用してください。機密データは、より厳格なアクセス制御を持つ別のバケットに保存してください。
SPA がユーザーにアクセスできるように、パブリックアクセス権限を設定します。
-
バケットのパブリックアクセスブロックを無効にします。
-
左側のナビゲーションペインで、 をクリックします。
-
公開アクセス禁止 トグルをクリックします。表示されるダイアログボックスで、アクセス禁止を無効にする と入力し、OK をクリックします。
-
-
バケットのアクセス権限を公開読み取りに設定します。
-
[アクセス制御リスト] タブに移動し、[設定] をクリックします。
-
バケット ACL を [パブリック読み取り] に設定します。表示されるダイアログボックスで、変更する をクリックします。
-
[保存] をクリックします。
-
手順 4:アプリケーションデプロイの確認
Web サイトをテストして、SPA がルート遷移を正しく処理することを確認します。
-
ホームページアクセスの確認:ブラウザーで、カスタムドメイン名 (例:
http://example.com) にアクセスして SPA を表示します。結果は次の図のようになります。
-
404 の動作の確認:ブラウザーで、存在しないファイル (例:
http://example.com/missing-object) にアクセスしてみます。リクエストはアプリケーションのエントリポイントにリダイレクトされ、200 OKステータスコードが返されます。
本番環境へのデプロイ
本番環境に対応した静的 Web サイトをデプロイするには、以下のセキュリティとパフォーマンスの最適化を設定します。
ベストプラクティス
-
安全な転送:HTTPS アクセスの有効化
現代のブラウザーは HTTP の Web サイトに「安全ではありません」という警告を表示し、検索エンジンは HTTPS のサイトをより高くランク付けします。OSS への HTTPS アクセスのガイドに従って、カスタムドメイン名への HTTPS アクセスを強制します。HTTPS は TLS/SSL を使用して転送中のデータを暗号化し、データの盗難や改ざんを防ぎます。
-
パフォーマンスの最適化:CDN アクセラレーションの設定
静的 Web サイトが全世界のユーザーにサービスを提供したり、同時実行数の多いトラフィックを処理したりする場合は、CDN アクセラレーションを設定して、世界中のエッジノードにコンテンツをキャッシュします。これにより、アクセス速度が向上し、OSS のトラフィックコストが削減されます。
CDN アクセラレーションが有効になった後、ページはエッジノードにキャッシュされたコンテンツから提供されます。ファイルを上書きした後も、キャッシュの有効期限が切れるまでリクエストは以前のバージョンを返すことがあります。したがって、Web サイトのコンテンツを更新した後は、更新されたファイルまたはディレクトリの CDN キャッシュを更新し、更新が完了した後にのみ Web サイトを確認してください。これにより、古いページがリリース失敗と誤認されるのを防ぎます。
-
オリジン間リソース共有 (CORS):CORS ルールの設定
SPA はバックエンド API を呼び出したり、サードパーティのリソースにアクセスしたりすることが多く、これはブラウザーの同一オリジンポリシーによって制限される可能性があります。CORS ルールを設定して、許可されたオリジン、メソッド、ヘッダーを指定し、アプリケーションが必要な API や外部リソースにアクセスできるようにします。
-
バージョン管理:リリースとロールバックの実装
OSS のバージョニングを有効にし、Jenkins などの自動化ツールと統合して、迅速なリリースと緊急ロールバックのための CI/CD ワークフローを作成します。
リスクの軽減
-
帯域幅盗用防止:ホットリンク保護の設定
他の Web サイトが静的リソースに直接リンクすると、トラフィックコストとサーバー負荷が増加します。Referer に基づくホットリンク保護を設定して、許可されたドメインのホワイトリストを作成し、不正な帯域幅の使用を防ぎます。
-
アクセス監視:アクセスログの有効化
リアルタイムログクエリを有効にして、すべてのアクセスリクエストを記録します。これにより、異常なアクセスパターンを特定し、ユーザーの行動を分析し、Web サイトのパフォーマンスを最適化するのに役立ちます。
よくある質問
SPA のページ更新における 404 エラー
シングルページアプリケーションでは、すべてのルートがクライアントサイドの JavaScript によって処理されます。ルート以外のルートに直接アクセスしたり、更新したりすると、サーバーは対応する物理ファイルを見つけることができません。これを解決するには、[デフォルトの404ページ]を index.html に、[エラーページのステータスコード]を 200 に設定してください。この設定により、「見つからない」すべてのパスがアプリケーションのエントリポイントに渡され、クライアントサイドルーターがそれらを正しく処理できるようになります。
静的 Web サイトホスティングの無効化
-
[バケット] ページに移動し、目的のバケット名をクリックして、左側のナビゲーションペインで をクリックします。
-
[設定] をクリックし、デフォルトのホームページ と デフォルトの404ページ の設定をクリアしてから、設定 をクリックして静的 Web サイトホスティング機能を無効にします。
動的コンテンツのサポート
静的 Web サイトホスティングは、HTML、CSS、JavaScript などの静的ファイルのみをサポートします。PHP、Python、Java などのサーバーサイド言語はサポートされていません。動的な機能については、フロントエンドフレームワークを使用したクライアントサイドレンダリングを使用するか、Function Compute のようなサーバーレスサービスを介してバックエンド API を呼び出してください。