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 sker en omdirigering
    • ett exempel på detta: ett OIDC-autentiseringsflöde bryts på grund av en omdirigering med fel värdnamn. detta omfattar 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 kopplad 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 till ett annat värdnamn som visas i webbläsaren. Ofta åsidosättas värdnamnet till standarddomänen App Service "azurewebsites.net".

Root cause - Application Gateway overwrites hostname to azurewebsites.net

Exempelkonfiguration

Om konfigurationen matchar en av nedanstående 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). Serverdelen App Service saknar den kontext som krävs för att generera omdirigerings-URL:en eller cookies som överensstämmer med domänen enligt webbläsarens beskrivning.

Lösning

Den produktionsrekommendanta lösningen är att konfigurera Application Gateway och App Service att inte åsidosätta värdnamnet. Följ anvisningarna för "Custom Domain (rekommenderas)" i Konfigurera App Service med Application Gateway

Överväg endast att tillämpa en annan lösning (till exempel en omskrivning av platshuvudet 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 risken för att domänbundna cookies och för absoluta URL:ar utanför platsrubriken förblir 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 platshuvudet 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 platshuvudet för att ha programgatewayens värdnamn. Mer information finns i instruktioner om hur du skriver om platsrubriken.

Anteckning

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 omskrivning av sidhuvud 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.