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".
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.