Felsöka App Service-problem i Application Gateway

Lär dig hur du diagnostiserar och löser problem som kan uppstå när Azure App Service används som serverdelsmål med Azure Application Gateway.

Översikt

I den här artikeln får du lära dig hur du felsöker följande problem enligt beskrivningen i Architecture Center: Bevara det ursprungliga HTTP-värdnamnet mellan en omvänd proxy och dess serverdelswebbprogram

  • Felaktiga absoluta URL:er
  • Felaktiga omdirigerings-URL:er
    • apptjänst-URL:en exponeras i webbläsaren när det finns en omdirigering
    • ett exempel på detta: ett OIDC-autentiseringsflöde bryts på grund av en omdirigering med fel värdnamn. Detta inkluderar användning av App Service-autentisering och auktorisering
  • Brutna cookies
    • cookies sprids inte mellan webbläsaren och App Service
    • ett exempel på detta: apptjänstens ARRAffinity-cookiedomän är inställd på apptjänstens värdnamn och är knuten till "example.azurewebsites.net", i stället för den ursprungliga värden. Därför bryts sessionstillhörigheten.

Rotorsaken till ovanstående symptom är en konfiguration som åsidosätter värdnamnet som används av Application Gateway mot App Service i ett annat värdnamn som visas av webbläsaren. Ofta åsidosättas värdnamnet till standarddomänen "azurewebsites.net".

Root cause - Application Gateway overwrites hostname to azurewebsites.net

Exempelkonfiguration

Om konfigurationen matchar någon av följande två situationer följer konfigurationen anvisningarna i den här artikeln:

  • Välj Värdnamn från serverdelsadress är aktiverat i HTTP-Inställningar
  • Åsidosättning med ett specifikt domännamn är inställt på ett annat värde än vad webbläsarbegäran har

Orsak

App Service är en tjänst för flera klientorganisationer, så den använder värdhuvudet i begäran för att dirigera begäran till rätt slutpunkt. Standarddomännamnet för App Services, *.azurewebsites.net (till exempel contoso.azurewebsites.net), skiljer sig från programgatewayens domännamn (till exempel contoso.com). Serverdelens App Service saknar den kontext som krävs för att generera omdirigerings-URL:er eller cookies som överensstämmer med domänen enligt webbläsaren.

Lösning

Den produktionsrekommendanta lösningen är att konfigurera Application Gateway och App Service så att de inte åsidosätter värdnamnet. Följ anvisningarna för "Anpassad domän (rekommenderas)" i Konfigurera App Service med Application Gateway

Överväg endast att använda en annan lösning (till exempel en omskrivning av platsrubriken enligt beskrivningen nedan) efter att ha utvärderat konsekvenserna enligt beskrivningen i artikeln: Bevara det ursprungliga HTTP-värdnamnet mellan en omvänd proxy och dess serverdelswebbprogram. Dessa konsekvenser omfattar möjligheten för domänbundna cookies och för absoluta URL:er utanför platsrubriken att förbli brutna.

Lösning: Skriv om platsrubriken

Varning

Den här konfigurationen har begränsningar. Vi rekommenderar att du granskar konsekvenserna av att använda olika värdnamn mellan klienten och Application Gateway och mellan Program och App Service i serverdelen. Mer information finns i artikeln i Architecture Center: Bevara det ursprungliga HTTP-värdnamnet mellan en omvänd proxy och dess serverdelswebbprogram

Ange värdnamnet i platsrubriken till programgatewayens domännamn. Det gör du genom att skapa en omskrivningsregel med ett villkor som utvärderar om platsrubriken i svaret innehåller azurewebsites.net. Den måste också utföra en åtgärd för att skriva om platsrubriken för att ha programgatewayens värdnamn. Mer information finns i instruktioner om hur du skriver om platsrubriken.

Kommentar

Stöd för omskrivning av HTTP-huvuden är endast tillgängligt för Standard_v2 och WAF_v2 SKU för Application Gateway. Vi rekommenderar att du migrerar till v2 för sidhuvudomskrivning och andra avancerade funktioner som är tillgängliga med v2 SKU.

Nästa steg

Om föregående steg inte löste problemet öppnar du ett supportärende.