Solución de problemas de App Service en Application Gateway

Aprenda a diagnosticar y resolver los problemas que pueden surgir cuando se usa Azure App Service como destino de back-end con Azure Application Gateway.

Información general

En este artículo, aprenderá a solucionar los siguientes problemas, como se describe con más detalle en el Centro de arquitectura: Conservar el nombre de host HTTP original entre un proxy inverso y su aplicación web back-end

La causa principal de los síntomas anteriores es una configuración que invalida el nombre de host tal como lo usa Application Gateway hacia App Service en un nombre de host diferente, tal como lo ve el explorador. A menudo, el nombre de host se reemplaza por el dominio de App Service predeterminado, "azurewebsites.net".

Root cause - Application Gateway overwrites hostname to azurewebsites.net

Configuración de ejemplo

En caso de que la configuración coincida con una de las dos situaciones siguientes, la configuración está sujeta a las instrucciones de este artículo:

  • Seleccionar el nombre de host de la dirección de back-end está habilitado en la configuración HTTP
  • La invalidación con un nombre de dominio específico se establece en un valor diferente del que tiene la solicitud del explorador

Causa

App Service es un servicio multiinquilino, por lo que usa el encabezado de host en la solicitud para enrutar la solicitud al punto de conexión correcto. El nombre de dominio predeterminado de App Service, *.azurewebsites.net (por ejemplo, contoso.azurewebsites.net), es diferente del nombre de dominio de la puerta de enlace de aplicaciones (por ejemplo, contoso.com). Al back-end de App Service le falta el contexto necesario para generar direcciones URL de redireccionamiento o cookies que se alineen con el dominio tal como lo ve el explorador.

Solución

La solución recomendada para producción es configurar Application Gateway y App Service para no invalidar el nombre de host. Siga las instrucciones de Custom Domain (recommended) (Dominio personalizado [recomendado]) en Configurar App Service con Application Gateway

Considere la posibilidad de aplicar otra solución alternativa (por ejemplo, una reescritura del encabezado de ubicación como se describe a continuación) después de evaluar las implicaciones como se describe en el artículo Conservar el nombre de host HTTP original entre un proxy inverso y su aplicación web back-end. Estas implicaciones incluyen la posibilidad de que las cookies enlazadas a un dominio y las direcciones URL absolutas fuera del encabezado de ubicación permanezcan rotas.

Solución alternativa: reescribir el encabezado de ubicación

Advertencia

Esta configuración presenta algunas limitaciones. Se recomienda revisar las implicaciones de usar nombres de host diferentes entre el cliente y Application Gateway y entre Application Gateway y App Service en back-end. Para más información, consulte el artículo del Centro de arquitectura: Conservar el nombre de host HTTP original entre un proxy inverso y su aplicación web back-end

Establezca el nombre de host del encabezado de ubicación en el nombre de dominio de la puerta de enlace de aplicaciones. Para ello, cree una regla de reescritura con una condición que evalúe si el encabezado de ubicación en la respuesta contiene azurewebsites.net. También debe realizar una acción para volver a escribir el encabezado de ubicación de modo que tenga el nombre de host de la puerta de enlace de aplicaciones. Para obtener más información, vea las instrucciones para volver a escribir el encabezado de ubicación.

Nota:

La compatibilidad con la reescritura de encabezados HTTP solo está disponible para Standard_v2 y WAF_v2 SKU de Application Gateway. Se recomienda migrar a v2 para la reescritura de encabezados y otras funcionalidades avanzadas que están disponibles con la versión v2 de la SKU.

Pasos siguientes

Si los pasos anteriores no resuelven el problema, abra una incidencia de soporte técnico.