Azure Storage での静的 Web サイト ホスティング
$web という名前のストレージ コンテナーから直接に、静的コンテンツ (HTML、CSS、JavaScript、画像ファイル) を提供できます。 Azure Storage でコンテンツをホスティングすることで、Azure Functions やその他のサービスとしてのプラットフォーム (PaaS) サービスなど、サーバーレス アーキテクチャを使用できます。 Web サーバーでコンテンツをレンダリングする必要がない場合、Azure Storage の静的 Web サイト ホスティングは優れた選択肢です。
静的 Web サイトにはいくつかの制限があります。 たとえば、ヘッダーを構成する場合は、Azure Content Delivery Network (Azure CDN) を使用する必要があります。 静的 Web サイト機能自体の一部としてヘッダーを構成する方法はありません。 また、AuthN と AuthZ はサポートされません。
これらの機能がお使いのシナリオで重要な場合は、Azure Static Web Apps を使用するようにしてください。 これは静的 Web サイトに代わる優れた手段であり、コンテンツのレンダリングに Web サーバーが必要ない場合にも適しています。 ヘッダーを構成することができ、AuthN と AuthZ は完全にサポートされています。 Azure Static Web Apps では、GitHub ソースからグローバル デプロイまでのフル マネージドの継続的インテグレーションと継続的デリバリー (CI/CD) ワークフローも提供されます。
Web サーバーでコンテンツのレンダリングが必要な場合は、Azure App Service を使用できます。
静的 Web サイトの設定
静的 Web サイトのホスティングは、ストレージ アカウントで有効にする必要がある機能です。
静的 Web サイトのホスティングを有効にするには、既定のファイルの名前を選択してから、必要に応じて、カスタム 404 ページへのパスを指定します。 アカウントに $web という名前の BLOB ストレージ コンテナーがまだ存在しない場合は、自動的に作成されます。 このコンテナーに、サイトのファイルを追加します。
手順を追ったガイダンスについては、「Host a static website in Azure Storage」 (Azure Storage で静的 Web サイトをホストする) を参照してください。
$web コンテナー内のファイルは大文字と小文字が区別され、匿名アクセス要求によって処理され、読み取り操作によってのみ使用できます。
コンテンツのアップロード
これらの任意のツールを使用して、コンテンツを $web コンテナーにアップロードできます。
コンテンツの表示
ユーザーは、Web サイトのパブリック URL を使用して、ブラウザーからサイトのコンテンツを表示できます。 URL を見つけるには、Azure portal、Azure CLI、または PowerShell を使用します。 「Web サイトの URL を検索する」を参照してください。
ユーザーがサイトを開き、特定のファイル (例: https://contosoblobaccount.z22.web.core.windows.net
) を指定しない場合、静的 Web サイトのホスティングを有効にしたときに指定したインデックス ドキュメントが表示されます。
サーバーが 404 エラーを返し、Web サイトを有効にしたときに、エラー ドキュメントを指定していない場合、既定の 404 ページがユーザーに返されます。
Note
Azure Storage でのクロス オリジン リソース共有 (CORS) のサポートは、静的な Web サイトではサポートされていません。
セカンダリ エンドポイント
セカンダリ リージョンでの冗長性を設定した場合は、セカンダリ エンドポイントを使用して Web サイトのコンテンツにアクセスすることもできます。 データはセカンダリ リージョンに非同期的にレプリケートされます。 したがって、セカンダリ エンドポイントで使用できるファイルが、プライマリ エンドポイントで使用できるファイルと常に同期されているとは限りません。
Web コンテナーのアクセス レベルの設定の影響
$web コンテナーの匿名アクセス レベルを変更できますが、これらのファイルは匿名アクセス要求によって処理されるため、この変更を行ってもプライマリ静的 Web サイト エンドポイントへの影響はありません。 つまり、すべてのファイルへのパブリック (読み取り専用) アクセスです。
プライマリ静的 Web サイト エンドポイントは影響を受けませんが、匿名アクセス レベルの変更は、プライマリ BLOB サービス エンドポイントには有効です。
たとえば、$web コンテナーの匿名アクセス レベルをプライベート (匿名アクセスなし)から BLOB (BLOB 専用の匿名読み取りアクセス)に変更した場合、プライマリ静的 Web サイト エンドポイント https://contosoblobaccount.z22.web.core.windows.net/index.html
への匿名アクセスのレベルは変更されません。
ただし、プライマリ BLOB サービス エンドポイント https://contosoblobaccount.blob.core.windows.net/$web/index.html
への匿名アクセスは変更され、ユーザーはこれら 2 つのエンドポイントのいずれかを使用してそのファイルを開くことができるようになります。
ストレージ アカウントの匿名アクセス設定を使用してストレージ アカウントの匿名アクセスを無効にしても、そのストレージ アカウントでホストされている静的 Web サイトには影響しません。 詳しくは、「BLOB データへの匿名読み取りアクセスを修復する (Azure Resource Manager デプロイ)」をご覧ください。
カスタム ドメインを静的 Web サイトの URL にマップする
静的 Web サイトをカスタム ドメイン経由で利用できるようにすることができます。
カスタム ドメインの HTTP アクセスは、Azure Storage でネイティブにサポートされているため、簡単に有効にすることができます。 HTTPS を有効にするには、Azure CDN を使用する必要があります。これは、Azure Storage がカスタム ドメインを使用した HTTPS をまだネイティブにサポートしていないためです。 手順を追ったガイダンスについては、「カスタム ドメインを Azure Blob Storage エンドポイントにマップする」を参照してください。
ストレージ アカウントが HTTPS 経由での安全な転送を必要とするように構成されている場合、ユーザーは HTTPS エンドポイントを使用する必要があります。
ヒント
Azure でドメインをホストすることを検討してください。 詳しくは、「Azure DNS でドメインをホストする」を参照してください。
HTTP ヘッダーの追加
静的 Web サイト機能の一部としてヘッダーを構成する方法はありません。 ただし、Azure CDN を使用してヘッダーを追加したり、ヘッダー値を追加 (または上書き) したりすることができます。 「Azure CDN の Standard ルール エンジン リファレンス」を参照してください。
ヘッダーを使用してキャッシュを制御する場合は、「キャッシュ規則で Azure CDN キャッシュの動作を制御する」を参照してください。
複数リージョンでの Web サイトのホスティング
複数の地域で Web サイトをホストすることを計画している場合は、リージョンのキャッシュに Content Delivery Network を使用することをお勧めします。 各リージョンで異なるコンテンツを提供する場合は、Azure Front Door を使用します。 これにより、フェールオーバー機能も提供されます。 カスタム ドメインを使用する予定の場合、Azure Traffic Manager はお勧めしません。 Azure Storage でのカスタム ドメイン名の確認方法が原因で問題が発生する可能性があります。
アクセス許可
静的 Web サイトを有効にできるようになるためのアクセス許可は、Microsoft.Storage/storageAccounts/blobServices/write または共有キーです。 このアクセスを提供する組み込みのロールに、ストレージ アカウント共同作成者が含まれます。
価格
静的 Web サイトのホスティングは無料で有効にできます。 サイトで利用した BLOB ストレージと、運用コストに対してのみ課金されます。 Azure Blob Storage の価格について詳しくは、Azure Blob Storage の料金に関するページをご覧ください。
メトリック
静的 Web サイトのページでメトリックを有効にできます。 メトリックを有効にすると、 $web コンテナーのファイルに関するトラフィック統計情報が、メトリック ダッシュボードでレポートされます。
静的 Web サイトのページでメトリックを有効にするには、「Enable metrics on static website pages」 (静的 Web サイト ページでメトリックを有効にする) を参照してください。
機能サポート
Data Lake Storage Gen2、Network File System (NFS) 3.0 プロトコル、または SSH ファイル転送プロトコル (SFTP) を有効にすると、この機能のサポートが影響を受ける場合があります。 これらの機能のいずれかを有効にしている場合は、「Azure Storage アカウントでの Blob Storage 機能のサポート」 を参照して、この機能のサポートを評価してください。
よく寄せられる質問 (FAQ)
Azure Storage のファイアウォールは静的 Web サイトで動作しますか?
はい。 ストレージ アカウントのネットワーク セキュリティ規則 (IP ベースおよび VNET ファイアウォールを含む) は、静的 Web サイトのエンドポイントでサポートされており、Web サイトを保護するために使用できます。
静的 Web サイトは Microsoft Entra ID をサポートしていますか?
不正解です。 静的 Web サイトでサポートされるのは、$web コンテナー内のファイルに対する匿名読み取りアクセスのみです。
静的 Web サイトでのカスタム ドメインの使用方法を教えてください
Azure Content Delivery Network (Azure CDN) を使用して、静的 Web サイトでカスタム ドメインを構成できます。 Azure CDN によって、世界中のどこからアクセスする場合でも Web サイトの待ち時間が一貫して短くなります。
静的 Web サイトでカスタム SSL (Secure Sockets Layer) 証明書をどのように使用しますか?
Azure CDN を使用して、静的 Web サイトでカスタム SSL 証明書を構成できます。 Azure CDN によって、世界中のどこからアクセスする場合でも Web サイトの待ち時間が一貫して短くなります。
静的 Web サイトでカスタム ヘッダーとルールをどのように追加しますか?
静的 Web サイトのホスト ヘッダーを構成するには、Azure CDN ルール エンジンを使用します。 こちらでフィードバックをお寄せください。
静的 Web サイトで HTTP 404 エラーが発生するのはなぜですか?
正しくない大文字と小文字を使用してファイル名を参照した場合、404 エラーが発生する可能性があります。 たとえば、index.html
ではなく Index.html
になります。 静的 Web サイトの URL にあるファイル名と拡張子は、HTTP を介して提供される場合でも大文字と小文字が区別されます。 これは、Azure CDN エンドポイントがまだプロビジョニングされていない場合にも発生することがあります。 新しい Azure CDN をプロビジョニングした後、伝達が完了するまで、最大 90 分間待ってください。
Web サイトのルート ディレクトリが既定のインデックス ページにリダイレクトされないのはなぜですか?
Azure ポータルで、お使いのアカウントの静的 Web サイト構成ページを開き、 [インデックス ドキュメント名] フィールドに設定されている名前と拡張子を見つけてください。 この名前が、ストレージ アカウントの $web コンテナにあるファイルの名前と完全に同じであることを確認します。 静的 Web サイトの URL にあるファイル名と拡張子は、HTTP を介して提供される場合でも大文字と小文字が区別されます。