Hospedaje de sitios web estáticos en Azure Storage
Puede proporcionar contenido estático (HTML, CSS, JavaScript y archivos de imagen) directamente desde un contenedor de almacenamiento llamado $web. El hospedaje de contenido en Azure Storage permite usar arquitecturas sin servidor que incluyen Azure Functions y otros servicios de plataforma como servicio (PaaS). El hospedaje de sitios web estáticos de Azure Storage es una opción excelente en los casos en los que no es necesario que un servidor web represente contenido.
Los sitios web estáticos tienen algunas limitaciones. Por ejemplo, si desea configurar encabezados, tendrá que usar Azure Content Delivery Network (Azure CDN). No hay forma de configurar encabezados como parte de la propia característica de sitio web estático. Además, no se admiten AuthN ni AuthZ.
Si estas características son importantes para su escenario, considere la posibilidad de usar Azure Static Web Apps. Es una excelente alternativa a los sitios web estáticos y también es adecuada en los casos en los que no se requiere un servidor web para representar contenido. Puede configurar encabezados y AuthN/AuthZ es totalmente compatible. Azure Static Web Apps también proporciona un flujo de trabajo de integración continua y entrega continua (CI/CD) totalmente administrado desde el origen de GitHub a la implementación global.
Si necesita un servidor web para representar contenido, puede usar Azure App Service.
Configuración de un sitio web estático
El hospedaje de sitios web estáticos es una característica que permite habilitar la cuenta de almacenamiento.
Para habilitar el hospedaje de sitios web estáticos, seleccione el nombre del archivo predeterminado y, opcionalmente, proporcione una ruta de acceso a una página 404 personalizada. Si aún no existe un contenedor de almacenamiento de blobs denominado $web en la cuenta, se creará uno. Agregue los archivos del sitio a ese contenedor.
Para obtener instrucciones detalladas, consulte Hospedaje de sitios web estáticos en Azure Storage.
Los archivos del contenedor $web distinguen mayúsculas de minúsculas, se proporcionan mediante solicitudes de acceso anónimo y solo están disponibles a través operaciones de lectura.
Carga de contenido
Puede usar cualquiera de estas herramientas para cargar contenido en el contenedor $web:
Visualización de contenido
Los usuarios pueden ver contenido del sitio desde un explorador usando la dirección URL pública del sitio web. Puede buscar la dirección URL usando Azure Portal, CLI de Azure o PowerShell. Consulte cómo Búsqueda de la dirección URL del sitio web.
El documento del índice que especifique al habilitar el hospedaje de sitios web estáticos aparece cuando los usuarios abren el sitio y no especifican un archivo concreto (por ejemplo, https://contosoblobaccount.z22.web.core.windows.net
).
Si el servidor devuelve un error 404 y no se ha especificado un documento de error al habilitar el sitio web, se devuelve una página 404 predeterminada al usuario.
Nota:
El uso compartido de recursos entre orígenes (CORS) para Azure Storage no se admite para los sitios web estáticos.
Puntos de conexión secundarios
Si configura la redundancia en una región secundaria, también puede tener acceso al contenido del sitio web mediante un punto de conexión secundario. Los datos se replican en las regiones secundarias de forma asincrónica. Por lo tanto, los archivos que están disponibles en el punto de conexión secundario no están siempre sincronizados con los archivos que están disponibles en el punto de conexión principal.
Impacto de la configuración del nivel de acceso en el contenedor web
Puede modificar el nivel de acceso anónimo del contenedor $web, pero esto no afecta al punto de conexión principal del sitio web estático porque estos archivos se proporcionan a través de solicitudes de acceso anónimo. Eso significa acceso público (de solo lectura) a todos los archivos.
Aunque el punto de conexión principal del sitio web estático no se ve afectado, un cambio en el nivel de acceso anónimo afecta al punto de conexión del servicio blob principal.
Por ejemplo, si cambia el nivel de acceso anónimo del contenedor $web de Privado (sin acceso anónimo) a Blob (acceso anónimo de lectura solo para blobs), el nivel de acceso anónimo al punto de conexión principal del sitio web estático https://contosoblobaccount.z22.web.core.windows.net/index.html
no cambia.
Sin embargo, el acceso anónimo al punto de conexión de servicio blob principal https://contosoblobaccount.blob.core.windows.net/$web/index.html
cambia, lo que permite a los usuarios abrir ese archivo mediante cualquiera de estos dos puntos de conexión.
Deshabilitar el acceso público en una cuenta de almacenamiento mediante la configuración de acceso público de la cuenta de almacenamiento no afecta a los sitios web estáticos hospedados en esa cuenta de almacenamiento. Para más información, consulte Corrección del acceso de lectura anónimo a datos de blobs (implementaciones de Azure Resource Manager).
Asignación de un dominio personalizado a una dirección URL de un sitio web estático
Puede hacer que el sitio web estático esté disponible a través de un dominio personalizado.
Es más fácil habilitar el acceso HTTP para un dominio personalizado, ya que Azure Storage lo admite de forma nativa. Para habilitar HTTPS, tendrá que usar Azure CDN porque Azure Storage no admite de forma nativa HTTPS con dominios personalizados. Para obtener instrucciones pormenorizadas, consulte Asignación de un dominio personalizado a un punto de conexión de Azure Blob Storage.
Si la cuenta de almacenamiento está configurada para requerir la transferencia segura a través de HTTPS, los usuarios deben utilizar el punto de conexión HTTPS.
Sugerencia
Consider la posibilidad de hospedar el dominio en Azure. Para más información, consulte Hospedaje de un dominio en Azure DNS.
Adición de encabezados HTTP
No hay forma de configurar encabezados como parte de la característica de sitio web estático. Sin embargo, puede usar Azure CDN para agregar encabezados y anexar (o sobrescribir) sus valores. Consulte Referencia del motor de reglas estándar de Azure CDN.
Si quiere usar encabezados para controlar el almacenamiento en caché, consulte Control del comportamiento del almacenamiento en caché de Azure CDN con reglas de almacenamiento en caché.
Hospedaje de sitios web de varias regiones
Si planea hospedar un sitio web en varias zonas geográficas, se recomienda usar Content Delivery Network para el almacenamiento en caché regional. Use Azure Front Door para proporcionar contenido diferente en cada región. También proporciona funcionalidad de conmutación por error. No se recomienda Azure Traffic Manager si tiene previsto usar un dominio personalizado. Pueden surgir problemas debido a cómo Azure Storage comprueba los nombres de dominio personalizados.
Permisos
El permiso para habilitar el sitio web estático es Microsoft.Storage/storageAccounts/blobServices/write o clave compartida. Los roles integrados que proporcionan este acceso incluyen Colaborador de la cuenta de almacenamiento.
Precios
Puede habilitar el hospedaje de sitios web estáticos de forma gratuita. Se le factura solo por el almacenamiento de blobs que el sitio usa y por los costes de las operaciones. Para obtener más información acerca de los precios de Azure Blob Storage, consulte la página de precios de Azure Blob Storage.
Métricas
Puede habilitar métricas en páginas de sitios web estáticos. Después de habilitar las métricas, las estadísticas de tráfico de los archivos en el contenedor $web aparecen en el panel de métricas.
Para habilitar métricas en las páginas de su sitio web estático, consulte Enable metrics on static website pages (Habilitación de métricas en páginas de sitios web estáticos).
Compatibilidad de características
La compatibilidad con esta característica puede verse afectada al habilitar Data Lake Storage Gen2, el protocolo Network File System (NFS) 3.0 o el Protocolo de transferencia de archivos SSH (SFTP). Si ha habilitado cualquiera de estas funcionalidades, consulte Compatibilidad con características de Blob Storage en cuentas de Azure Storage para evaluar la compatibilidad con esta característica.
Preguntas más frecuentes
¿Funciona el firewall de Azure Storage con un sitio web estático?
Sí. Se admiten reglas de seguridad de red de la cuenta de almacenamiento, como firewalls basados en IP y VNET, para el punto de conexión del sitio web estático, y se pueden usar para proteger el sitio web.
¿Los sitios web estáticos admiten Microsoft Entra ID?
No. Un sitio web estático solo admite acceso de lectura anónimo para los archivos del contenedor $web.
¿Cómo uso un dominio personalizado con un sitio web estático?
Puede configurar un dominio personalizado con un sitio web estático mediante Azure Content Delivery Network (Azure CDN). Azure CDN proporciona latencias bajas coherentes al sitio web desde cualquier lugar del mundo.
¿Cómo se usa el certificado de la Capa de sockets seguros (SSL) personalizado con un sitio web estático?
Puede configurar un certificado SSL personalizado con un sitio web estático mediante Azure CDN. Azure CDN proporciona latencias bajas coherentes al sitio web desde cualquier lugar del mundo.
¿Cómo se agregan encabezados y reglas personalizados con un sitio web estático?
Puede configurar el encabezado de host para un sitio web estático mediante un motor de reglas de Azure CDN. Nos interesa conocer sus comentarios aquí.
¿Por qué obtengo un error HTTP 404 de un sitio web estático?
Puede ocurrir un error 404 si hace referencia a un nombre de archivo con mayúsculas y minúsculas incorrectas. Por ejemplo, Index.html
en lugar de index.html
. Los nombres de archivo y las extensiones en la URL de un sitio web estático distinguen mayúsculas de minúsculas, aunque entreguen a través de HTTP. Esto también puede ocurrir si el punto de conexión de Azure CDN aún no está aprovisionado. Espere hasta 90 minutos después de aprovisionar una nueva red de Azure CDN para que se complete la propagación.
¿Por qué el directorio raíz del sitio web no redirige a la página de índice predeterminada?
En Azure Portal, abra la página de configuración del sitio web estático de su cuenta y busque el nombre y la extensión que se establecieron en el campo Nombre del documento de índice. Asegúrese de que este nombre sea exactamente el mismo que el nombre del archivo ubicado en el contenedor $web de la cuenta de almacenamiento. Los nombres de archivo y las extensiones en la URL de un sitio web estático distinguen mayúsculas de minúsculas, aunque entreguen a través de HTTP.