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