Problemen met App Service in Application Gateway oplossen

Informatie over het vaststellen en oplossen van problemen die kunnen optreden wanneer Azure App Service wordt gebruikt als back-enddoel met Azure Application Gateway.

Overzicht

In dit artikel leert u hoe u de volgende problemen kunt oplossen, zoals beschreven in Architecture Center: de oorspronkelijke HTTP-hostnaam behouden tussen een omgekeerde proxy en de back-endwebtoepassing

  • Onjuiste absolute URL's
  • Onjuiste omleidings-URL's
    • de URL van de app-service wordt weergegeven in de browser wanneer er een omleiding is
    • een voorbeeld hiervan: een OIDC-verificatiestroom is verbroken vanwege een omleiding met een verkeerde hostnaam; dit omvat het gebruik van App Service verificatie en autorisatie
  • Verbroken cookies
    • cookies worden niet doorgegeven tussen de browser en de App Service
    • een voorbeeld hiervan: het cookiedomein ARRAffinity van de app-service is ingesteld op de hostnaam van de app-service en is gekoppeld aan 'example.azurewebsites.net', in plaats van de oorspronkelijke host. Hierdoor is sessieaffiniteit verbroken.

De hoofdoorzaak voor de bovenstaande symptomen is een installatie die de hostnaam overschrijft die wordt gebruikt door Application Gateway richting App Service in een andere hostnaam, zoals wordt gezien door de browser. Vaak wordt de hostnaam overschreven naar het standaarddomein App Service 'azurewebsites.net'.

Hoofdoorzaak: Application Gateway overschrijft hostnaam naar azurewebsites.net

Voorbeeldconfiguratie

Als uw configuratie overeenkomt met een van de onderstaande twee situaties, is uw installatie onderworpen aan de instructies in dit artikel:

  • Hostnaam kiezen uit back-endadres is ingeschakeld in HTTP-instellingen
  • Overschrijven met specifieke domeinnaam is ingesteld op een andere waarde dan de waarde die de browseraanvraag heeft

Oorzaak

App Service is een multitenant-service, dus wordt de hostheader in de aanvraag gebruikt om de aanvraag naar het juiste eindpunt te routeren. De standaarddomeinnaam van App Services, *.azurewebsites.net (bijvoorbeeld contoso.azurewebsites.net), verschilt van de domeinnaam van de toepassingsgateway (bijvoorbeeld contoso.com). De back-end App Service ontbreekt de vereiste context om omleidings-URL's of cookies te genereren die zijn afgestemd op het domein, zoals wordt gezien door de browser.

Oplossing

De door de productie aanbevolen oplossing is het configureren van Application Gateway en App Service om de hostnaam niet te overschrijven. Volg de instructies voor 'Custom Domain (aanbevolen)' in App Service configureren met Application Gateway

Overweeg alleen een andere tijdelijke oplossing toe te passen (zoals het herschrijven van de locatieheader zoals hieronder wordt beschreven) na het beoordelen van de gevolgen zoals beschreven in het artikel: Behoud de oorspronkelijke HTTP-hostnaam tussen een omgekeerde proxy en de bijbehorende back-endwebtoepassing. Deze gevolgen zijn onder andere het potentieel voor domeingebonden cookies en voor absolute URL's buiten de locatieheader, om verbroken te blijven.

Tijdelijke oplossing: de locatieheader herschrijven

Waarschuwing

Deze configuratie wordt geleverd met beperkingen. We raden u aan om de gevolgen van het gebruik van verschillende hostnamen tussen de client en Application Gateway en tussen toepassing en App Service in de back-end te bekijken. Raadpleeg het artikel in Architecture Center voor meer informatie: de oorspronkelijke HTTP-hostnaam behouden tussen een omgekeerde proxy en de bijbehorende back-endwebtoepassing

Stel de hostnaam in de locatieheader in op de domeinnaam van de toepassingsgateway. Hiervoor maakt u een herschrijfregel met een voorwaarde die evalueert of de locatieheader in het antwoord azurewebsites.net bevat. Er moet ook een actie worden uitgevoerd om de locatieheader te herschrijven om de hostnaam van de toepassingsgateway te hebben. Zie de instructies voor het herschrijven van de locatiekoptekst voor meer informatie.

Notitie

De ondersteuning voor het herschrijven van HTTP-headers is alleen beschikbaar voor de Standard_v2 en WAF_v2 SKU van Application Gateway. We raden u aan om te migreren naar v2 voor herschrijven van headers en andere geavanceerde mogelijkheden die beschikbaar zijn met v2-SKU.

Volgende stappen

Als het probleem niet is opgelost met de voorgaande stappen, opent u een ondersteuningsticket.