Поделиться через


Размещение статических веб-сайтов в службе хранилища Azure

Хранилище BLOB-объектов Azure идеально подходит для хранения больших объемов неструктурированных данных, таких как текст, изображения и видео. Поскольку хранилище BLOB-объектов также предоставляет поддержку размещения статических веб-сайтов, это отличный вариант в тех случаях, когда не требуется веб-сервер для обработки содержимого. Хотя вы ограничены размещением статического содержимого, например HTML, CSS, JavaScript и файлов изображений, вы можете использовать бессерверные архитектуры, включая Функции Azure и другие службы Платформы как услуга (PaaS).

У статических веб-сайтов есть некоторые ограничения. Например, если требуется настроить заголовки, необходимо использовать сеть доставки содержимого Azure (Azure CDN). Настройка заголовков в функциях самого статического веб-сайта не предусмотрена. Кроме того, AuthN и AuthZ не поддерживаются.

Если эти функции важны для вашего сценария, рассмотрите возможность использования Статических веб-приложений Azure. Это отличная альтернатива статическим веб-сайтам, которая также подходит в тех случаях, когда веб-сервер не должен визуализировать содержимое. Можно настроить заголовки, а AuthN и AuthZ полностью поддерживаются. Статические веб-приложения Azure предоставляют полностью управляемый процесс непрерывной интеграции и непрерывной поставки (CI/CD) из источника GitHub в глобальное развертывание.

Если для подготовки содержимого к просмотру требуется веб-сервер, можно использовать Службу приложений Azure.

Настройка статического веб-сайта

Функции размещения статических веб-сайтов настраиваются в учетной записи хранения и по умолчанию не включены. Чтобы включить размещение статических веб-сайтов, выберите учетную запись хранения. В области навигации слева выберите статический веб-сайт из группы управления данными и нажмите кнопку "Включено". Укажите имя документа индекса. При необходимости можно указать путь к пользовательской странице 404. Наконец, нажмите кнопку "Сохранить ", чтобы сохранить изменения конфигурации.

Снимок экрана с местоположениями, которые используются для включения размещения статических веб-сайтов в учетной записи хранения.

Контейнер хранилища BLOB-объектов с именем $web создается для вас в учетной записи хранения, если она еще не существует. Добавьте файлы веб-сайта в контейнер $web , чтобы сделать их доступными через основную конечную точку статического веб-сайта.

Скриншот, показывающий как включить размещение статических веб-сайтов в учетной записи хранения с использованием контейнера блоб-хранилища.

Файлы в контейнере $web чувствительны к регистру, предоставляются через анонимные запросы на доступ и могут быть доступны только через операции чтения.

Пошаговые инструкции см. в статье Размещение статического веб-сайта в службе хранилища Azure.

Отправка содержимого

Для отправки содержимого в контейнер $web можно использовать любой из этих инструментов:

Просмотр содержимого

Пользователи могут просматривать содержимое сайта из браузера, используя общедоступный URL-адрес веб-сайта. URL-адрес можно найти с помощью портала Azure, Azure CLI или PowerShell. См. раздел Поиск URL-адреса веб-сайта.

Документ индекса, который вы указываете при включении размещения статических веб-сайтов, появляется, когда пользователи открывают сайт и не указывают конкретный файл (например, https://contosostaticsite.z22.web.core.windows.net).

Если сервер возвращает ошибку 404, и вы не указали документ об ошибке при включении веб-сайта, то 404 страница по умолчанию возвращается пользователю.

Примечание.

Поддержка CORS для Службы хранилища Azure недоступна для статического веб-сайта.

Вторичные конечные точки

Если вы настроили избыточность в дополнительном регионе, вы также можете получить доступ к содержимому веб-сайта с помощью вторичной конечной точки. Данные реплицируются в вторичные регионы асинхронно. Поэтому файлы, доступные на вторичной конечной точке, не всегда синхронизируются с файлами, доступными в основной конечной точке.

Влияние настройки уровня доступа в веб-контейнере

Вы можете изменить уровень анонимного доступа контейнера $web , но это изменение не влияет на основную статическую конечную точку веб-сайта, так как эти файлы обслуживаются с помощью анонимных запросов на доступ. Это означает общий (только для чтения) доступ ко всем файлам.

Хотя основная конечная точка статического веб-сайта не затрагивается, изменение анонимного уровня доступа влияет на основную конечную точку блоб-сервиса.

Например, если изменить уровень анонимного доступа контейнера $web с Частный (без анонимного доступа) на Blob (только анонимный доступ на чтение для BLOB-объектов), тогда уровень анонимного доступа к первичной конечной точке статического веб-сайта https://contosostaticsite.z22.web.core.windows.net/index.html не изменяется.

Однако анонимный доступ к основной конечной точке https://contosostaticsite.blob.core.windows.net/$web/index.html службы объектов BLOB изменяется таким образом, что это позволяет пользователям открывать этот файл с помощью любой из этих двух конечных точек.

Отключение анонимного доступа в учетной записи хранения с помощью параметра анонимного доступа учетной записи хранения не влияет на статические веб-сайты, размещенные в этой учетной записи хранения. Дополнительные сведения см. в статье Исправление анонимного доступа на чтение к данным BLOB-объектов (развертывания Azure Resource Manager).

Сопоставление личного домена с URL-адресом статического веб-сайта

Вы можете сделать статический веб-сайт доступным через личный домен.

Разрешить HTTP-доступ для личного домена проще, так как служба хранилища Azure изначально поддерживает его. Чтобы включить ПРОТОКОЛ HTTPS, необходимо использовать Azure CDN, так как служба хранилища Azure еще не поддерживает HTTPS с пользовательскими доменами. Пошаговые инструкции приведены в статье Сопоставление личного домена с конечной точкой хранилища BLOB-объектов Azure.

Если учетная запись хранения настроена на требование безопасной передачи по HTTPS, пользователи должны использовать конечную точку HTTPS.

Подсказка

Рассмотрите возможность размещения домена в Azure. Дополнительные сведения см. в статье Размещение домена в Azure DNS.

Добавление заголовков HTTP

Способы настройки заголовков как части функции статического веб-сайта не предусмотрены. Однако для добавления заголовков и добавления (или перезаписи) значений заголовков можно использовать Azure CDN. См. статью Справочник по стандартному обработчику правил для Azure CDN.

Если вы хотите использовать заголовки для управления кэшированием, ознакомьтесь со статьей Управление режимом кэширования Azure CDN с помощью правил кэширования.

Размещение веб-сайтов в нескольких регионах

Если вы планируете размещать веб-сайт в нескольких географических регионах, мы рекомендуем использовать сеть доставки содержимого для регионального кэширования. Используйте Azure Front Door, если хотите предоставлять различное содержимое в каждом регионе. Также предоставляется возможность аварийного переключения. Диспетчер трафика Azure не рекомендуется, если планируется использовать личный домен. Проблемы могут возникать из-за способа проверки имен личных доменов Службой хранилища Azure.

Разрешения

Разрешение, позволяющее включить статический веб-сайт, — это Microsoft.Storage/storageAccounts/blobServices/write или общий ключ. Встроенные роли, предоставляющие этот доступ, включают в себя участника учетной записи хранения.

Цены

Размещение статического веб-сайта можно включить бесплатно. Вам будет выставлен счет только за хранилище BLOB-объектов, которое использует ваш сайт, а также за операционные затраты. Дополнительные сведения о ценах на хранилище BLOB-объектов Azure см. на странице цен.

Метрики

Вы можете включить метрики на страницах статического веб-сайта. После включения метрик статистика трафика файлов в контейнере $web будет отображаться на панели мониторинга метрик.

Сведения о включении метрик на страницах статического веб-сайта см. в разделе Включение метрик на страницах статического веб-сайта.

Поддержка функций

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP. Если вы включили любую из этих возможностей, см. Поддержка функций Blob Storage в учетных записях хранения Azure, чтобы оценить поддержку этой функции.

Вопросы и ответы

Работает ли брандмауэр службы хранилища Azure со статическим веб-сайтом?

Да. Правила сетевой безопасности учетной записи хранения, включая брандмауэры на основе протоколов IP и виртуальной сети, поддерживаются для конечной точки статического веб-сайта и могут использоваться для защиты веб-сайта.

Поддерживают ли статические веб-сайты службу Microsoft Entra ID?

Нет Статический веб-сайт поддерживает только анонимный доступ на чтение файлов в контейнере $web .

Как использовать личный домен со статическим веб-сайтом?

Можно настроить личный домен со статическим веб-сайтом с помощью сети доставки содержимого (Azure CDN). Azure CDN обеспечивает постоянно низкую задержку при доступе к веб-сайту из любого расположения.

Как использовать пользовательский SSL-сертификат с статическим веб-сайтом?

Вы можете настроить настраиваемый SSL-сертификат со статическим веб-сайтом с помощью Azure CDN. Azure CDN обеспечивает постоянно низкую задержку при доступе к веб-сайту из любого расположения.

Как добавить настраиваемые заголовки и правила с помощью статического веб-сайта?

Заголовок узла для статического веб-сайта можно настроить с помощью двигателя правил Azure CDN. Мы хотели бы услышать ваши отзывы здесь.

Почему я получаю сообщение об ошибке HTTP 404 от статического веб-сайта?

Ошибка 404 может произойти, если вы ссылаетесь на имя файла, используя неправильный случай. Например, Index.html вместо index.html. Имена файлов и расширения в URL-адресе статического веб-сайта чувствительны к регистру, даже если передаются через HTTP. Это также может произойти, если конечная точка Azure CDN еще не подготовлена. Подождите до 90 минут после развертывания новой сети Azure CDN, чтобы распространение завершилось.

Почему корневая папка веб-сайта не перенаправляется на страницу индексов по умолчанию?

На портале Azure откройте страницу конфигурации статического веб-сайта своей учетной записи и найдите имя и расширение, заданные в поле Имя документа индекса. Убедитесь, что это имя совпадает с именем файла, расположенного в контейнере $web учетной записи хранения. Имена файлов и расширения в URL-адресе статического веб-сайта чувствительны к регистру, даже если передаются через HTTP.

Почему я не могу получить доступ к статическим веб-сайтам в учетной записи хранения, если для большого двоичного объекта в учетной записи хранения включена частная конечная точка?

При включении частной конечной точки для BLOB-объектов в учетной записи хранения доступ к этой учетной записи хранения ограничивается только ресурсами в пределах одной виртуальной сети. Следовательно, это ограничение предотвращает внешний доступ к статическому веб-сайту, размещенному в учетной записи хранения, что делает содержимое статического веб-сайта недоступным. Конфигурация частной конечной точки ограничивает доступ ко всем ресурсам учетной записи хранения, включая статическое содержимое веб-сайта, ресурсами в той же виртуальной сети, где включена частная конечная точка. Решение будет заключаться в создании частной конечной точки специально для Интернета. Статический веб-сайт нуждается в выделенной частной конечной точке для домена $web.

Следующие шаги