Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Sammanfattning
Lär dig hur du felsöker fel med felaktig gateway (502) i Azure Application Gateway så att du snabbt kan återställa tillförlitlig åtkomst till dina webbappar.
Anmärkning
Vi rekommenderar att du använder modulen Azure Az PowerShell för att interagera med Azure. Kom igång genom att läsa Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i Migrera Azure PowerShell från AzureRM till Az.
Symptoms
När du har konfigurerat en programgateway kan du se felet Serverfel: 502 – Webbservern fick ett ogiltigt svar när den fungerade som en gateway eller proxyserver. Det kan bero på följande:
- Nätverkssäkerhetsgrupp (NSG), användardefinierad väg (UDR) eller anpassat DNS-problem.
- Standard hälsoavkänning kan inte nå backend-VM:er.
- Begär tidsgräns eller anslutningsproblem med användarbegäranden.
- Application Gateways serverdelspool är inte konfigurerad eller tom.
- Felaktiga instanser i BackendAddressPool.
- Det överordnade SSL-certifikatet matchar inte.
Problem med nätverkssäkerhetsgrupp, användardefinierad väg eller anpassad DNS
Orsak
Om en NSG, UDR eller anpassad DNS blockerar åtkomsten till serverdelen kan programgatewayinstanser inte nå serverdelspoolen. Det här problemet orsakar sondfel, vilket resulterar i fel 502.
NSG/UDR kan finnas antingen i undernätet för programgatewayen eller i undernätet där de virtuella programdatorerna distribueras.
På samma sätt kan förekomsten av en anpassad DNS i det virtuella nätverket också orsaka problem. Ett FQDN som används för medlemmar i serverdelspoolen kanske inte löses korrekt av den användarkonfigurerade DNS-servern för VNet.
Lösning
Verifiera NSG-, UDR- och DNS-konfiguration genom att gå igenom följande steg:
Kontrollera NSG:er som är associerade med application gateway-undernätet. Kontrollera att kommunikationen till serverdelen inte är blockerad. Mer information finns i Nätverkssäkerhetsgrupper.
Kontrollera UDR som är associerad med undernätet för programgatewayen. Kontrollera att UDR inte dirigerar trafik bort från serverdelsundernätet. Du kan till exempel söka efter routning till virtuella nätverksinstallationer eller standardvägar som annonseras till programgatewayens undernät via ExpressRoute/VPN.
$vnet = Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName Get-AzVirtualNetworkSubnetConfig -Name appGwSubnet -VirtualNetwork $vnetKontrollera den effektiva NSG:n och routa med den virtuella backend-VM:n.
Get-AzEffectiveNetworkSecurityGroup -NetworkInterfaceName nic1 -ResourceGroupName testrg Get-AzEffectiveRouteTable -NetworkInterfaceName nic1 -ResourceGroupName testrgKontrollera förekomsten av anpassad DNS i det virtuella nätverket. Kontrollera DNS genom att titta på information om VNet-egenskaperna i utdata.
Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName DhcpOptions : { "DnsServers": [ "x.x.x.x" ] }Om det finns ska du säkerställa att DNS-servern kan lösa backend-poolmedlemmens FQDN korrekt.
Standardhälsoavsökningen kan inte nå backend-VM:ar
Orsak
502-fel kan också indikera att standardhälsoavsökningen inte kan nå virtuella serverdelsdatorer.
När du etablerar en programgatewayinstans konfigureras automatiskt en standardhälsoavsökning för varje BackendAddressPool med hjälp av egenskaperna för BackendHttpSetting. Du behöver inte ange några indata för att ställa in den här prob. När du konfigurerar en belastningsutjämningsregel associerar du en BackendHttpSetting med en BackendAddressPool. Var och en av dessa associationer har en standardprobe konfigurerad, och applikationsgatewayen startar en regelbunden hälsokontrollanslutning till varje instans i BackendAddressPool vid den port som anges i elementet BackendHttpSetting.
I följande tabell visas de värden som är associerade med standardhälsoavsökningen:
| Probegenskap | Värde | Description |
|---|---|---|
| Avsöknings-URL | http://127.0.0.1/ |
URL-sökväg |
| Intervall | 30 | Probningsintervall i sekunder |
| Tidsgräns | 30 | Timeout för prob i sekunder |
| Ohälsosamt tröskelvärde | 3 | Antal återförsök av avsökning. Backendsservern markeras som ur funktion efter att antalet på varandra följande probefel når tröskelvärdet för ohälsosamt tillstånd. |
Lösning
- Värdvärdet för begäran är inställt på 127.0.0.1. Kontrollera att en standardwebbplats är konfigurerad och lyssnar på 127.0.0.1.
- Protokollet BackendHttpSetting avgör protokollet för begäran.
- URI-sökvägen är inställd på
/*. - Om BackendHttpSetting anger en annan port än 80 konfigurerar du standardplatsen för att lyssna på den porten.
- Anropet till
protocol://127.0.0.1:portska returnera en HTTP-resultatkod på 200. Den här koden ska returneras inom tidsgränsen på 30 sekunder. - Kontrollera att den konfigurerade porten är öppen och att det inte finns några brandväggsregler eller Azure nätverkssäkerhetsgrupper som blockerar inkommande eller utgående trafik på den konfigurerade porten.
- Om du använder Azure klassiska virtuella datorer eller molntjänst med ett FQDN eller en offentlig IP-adress ska du se till att du öppnar motsvarande endpoint.
- Om du konfigurerar den virtuella datorn via Azure Resource Manager och den ligger utanför det virtuella nätverk där programgatewayen distribueras måste du konfigurera en Nätverkssäkerhetsgrupp för att tillåta åtkomst på önskad port.
Mer information finns i Konfiguration av Application Gateway-infrastruktur.
Ogiltig eller felaktig konfiguration av anpassade hälsoavsökningar
Orsak
Anpassade hälsoavsökningar ger dig mer flexibilitet än standardbeteendet för avsökning. När du använder anpassade sonder kan du ange sondintervallet, URL:en, sökvägen som ska testas och hur många misslyckade svar som kan accepteras innan du markerar back-end-poolinstansen som ohälsosam.
I följande tabell beskrivs de ytterligare egenskaper som du kan ange:
| Probegenskap | Description |
|---|---|
| Namn | Sondens namn. Använd det här namnet om du vill referera till avsökningen i HTTP-inställningarna för serverdelen. |
| Protokoll | Protokoll som används för att skicka sonden. Sonden använder det protokoll som definierats i HTTP-inställningarna för backend. |
| värd | Värdnamn för att skicka avsökningen. Den här egenskapen gäller endast när du konfigurerar flera platser på programgatewayen. Det här värdnamnet skiljer sig från värdnamnet för den virtuella datorn. |
| Sökväg | Den relativa sökvägen för sonden. Den giltiga sökvägen börjar från '/'. Proben skickas till <protocol>://<host>:<port><path>. |
| Intervall | Avsökningsintervall i sekunder. Det här värdet anger tidsintervallet mellan två på varandra följande sonder. |
| Tidsgräns | Tidsgräns för prob i sekunder. Om ett giltigt svar inte tas emot inom den här tidsgränsen markeras avsökningen som misslyckad. |
| Ohälsosamt tröskelvärde | Antal återförsök av avsökning. Backendsservern markeras som ur funktion efter att antalet på varandra följande probefel når tröskelvärdet för ohälsosamt tillstånd. |
Lösning
Kontrollera att du har konfigurerat den anpassade hälsokontrollen korrekt, enligt tabellen ovan. Förutom de föregående felsökningsstegen kontrollerar du även följande steg:
- Se till att du specificerar proben korrekt enligt guiden.
- Om du konfigurerar applikationsgatewayen för en enda webbplats anger du standardvärdnamnet som
127.0.0.1, om du inte har konfigurerat något annat i den anpassade avsökningen. - Kontrollera att ett anrop till
http://<host>:<port><path>returnerar en HTTP-resultatkod på 200. - Kontrollera att värdena Intervall, Timeout och UnhealthyThreshold ligger inom de godkända intervallen.
- Om du använder en HTTPS-avsökning kontrollerar du att serverdelsservern inte kräver SNI genom att konfigurera ett återställningscertifikat på själva serverdelsservern.
Tidsgräns för begäran eller anslutningsproblem med användarbegäranden
Orsak
När programgatewayen tar emot en användarbegäran tillämpar den de konfigurerade reglerna på begäran och dirigerar den till en serverdelspoolinstans. Den väntar på ett konfigurerbart tidsintervall för ett svar från serverdelsinstansen. Som standard är det här intervallet 20 sekunder. Om programgatewayen inte får något svar från serverdelsprogrammet i det här intervallet i Application Gateway v1 får användarbegäran ett 502-fel. I Application Gateway v2, om programgatewayen inte får något svar från serverdelsprogrammet i det här intervallet, prövas begäran mot en andra medlem i serverdelspoolen. Om den andra begäran misslyckas får användarbegäran ett 504-fel.
Lösning
Du kan konfigurera den här inställningen via BackendHttpSetting, som du kan använda för olika pooler. Olika serverdelspooler kan ha olika backendHttpSetting-konfigurationer och olika tidsgränsinställningar för begäranden.
New-AzApplicationGatewayBackendHttpSettings -Name 'Setting01' -Port 80 -Protocol Http -CookieBasedAffinity Enabled -RequestTimeout 60
Application Gateways serverdelspool är inte konfigurerad eller tom
Orsak
Om programgatewayen inte har några virtuella datorer eller någon virtuella dator-skalningsuppsättning konfigurerad i serverdelsadresspoolen, kan den inte dirigera någon kundförfrågan och returnerar ett "bad gateway"-fel.
Lösning
Kontrollera att serverdelsadresspoolen inte är tom. Du kan kontrollera det här villkoret via PowerShell, CLI eller portalen.
Get-AzApplicationGateway -Name "SampleGateway" -ResourceGroupName "ExampleResourceGroup"
Utdata från föregående cmdlet ska innehålla en icke-tom backendadresspool. I följande exempel visas två returnerade pooler som har konfigurerats med ett FQDN eller IP-adresser för backend-VM:erna. Etableringstillståndet för BackendAddressPool måste vara Succeeded.
Text om backendadresspooler
[{
"BackendAddresses": [{
"ipAddress": "10.0.0.10",
"ipAddress": "10.0.0.11"
}],
"BackendIpConfigurations": [],
"ProvisioningState": "Succeeded",
"Name": "Pool01",
"Etag": "W/\"00000000-0000-0000-0000-000000000000\"",
"Id": "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name>/backendAddressPools/pool01"
}, {
"BackendAddresses": [{
"Fqdn": "xyx.cloudapp.net",
"Fqdn": "abc.cloudapp.net"
}],
"BackendIpConfigurations": [],
"ProvisioningState": "Succeeded",
"Name": "Pool02",
"Etag": "W/\"00000000-0000-0000-0000-000000000000\"",
"Id": "/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Network/applicationGateways/<application gateway name>/backendAddressPools/pool02"
}]
Felaktiga instanser i BackendAddressPool
Orsak
Om alla instanser av BackendAddressPool är ohälsosamma har applikationsgatewayen ingen backend att dirigera användarförfrågningar till. Det här villkoret kan också inträffa när backend-instanser fungerar korrekt men inte har det nödvändiga programmet distribuerat.
Lösning
Kontrollera att instanserna är felfria och att programmet är korrekt konfigurerat. Kontrollera om serverdelsinstanserna kan svara på en ping från en annan virtuell dator i samma virtuella nätverk. Om du konfigurerar en offentlig slutpunkt kontrollerar du att en webbläsarbegäran till webbprogrammet är användbar.
Det överordnade SSL-certifikatet matchar inte
Orsak
TLS-certifikatet som är installerat på serverdelsservrarna matchar inte värdnamnet som tas emot i värdbegäranshuvudet.
I scenarier där TLS från slutpunkt till slutpunkt är aktiverat, en konfiguration som uppnås genom att redigera lämpliga HTTP-inställningar för serverdelen och där ändra konfigurationen av inställningen "Serverdelsprotokoll" till HTTPS, är det obligatoriskt att se till att DNS-namnet för TLS-certifikatet som är installerat på serverdelsservrarna matchar värdnamnet som kommer till serverdelen i HTTP-värdhuvudbegäran.
Som en påminnelse är effekten av att aktivera alternativet protokollval-HTTPS på 'Inställningar för backend HTTP' istället för HTTP, att den andra delen av kommunikationen som sker mellan exemplaren av Application Gateway och de bakomliggande servrarna krypteras med TLS.
På grund av att Application Gateway som standard skickar samma HTTP-värdhuvud till serverdelen som den tar emot från klienten måste du se till att TLS-certifikatet som är installerat på serverdelsservern utfärdas med ett DNS-namn som matchar värdnamnet som tas emot av serverdelen i HTTP-värdhuvudet. Kom ihåg att om inget annat anges är värdnamnet detsamma som det som togs emot från klienten.
Till exempel:
Anta att du har en Application Gateway för att hantera https-begäranden för domänen www.contoso.com. Du kan ha domänen contoso.com delegerad till en Azure DNS offentlig zon och en DNS-post i den zonen som pekar www.contoso.com till den offentliga IP-adressen för den specifika Application Gateway som ska hantera begäranden.
På den applikationsgatewayen ska du ha en lyssnare för värden www.contoso.com med en regel som har inställningen "Backed HTTP Setting" tvingad att använda HTTPS-protokollet (säkerställa TLS mellan slutpunkterna). Samma regel kunde ha konfigurerat en serverdelspool med två virtuella datorer som kör IIS som webbservrar.
Som vi vet gör aktivering av HTTPS i "HTTP-inställning för serverdelen" för regeln så att den andra delen av kommunikationen som sker mellan Application Gateway-instanserna och servrarna i serverdelen använder TLS.
Om serverdelsservrarna inte har något TLS-certifikat utfärdat för DNS-namnet www.contoso.com eller *.contoso.com misslyckas begäran med serverfel: 502 – Webbservern fick ett ogiltigt svar när den fungerade som en gateway eller proxyserver eftersom det överordnade SSL-certifikatet (certifikatet som är installerat på serverdelsservrarna) inte matchar värdnamnet i värdhuvudet. och därför misslyckas TLS-förhandlingen.
www.contoso.com --> APP GW frontend IP --> Lyssnare med en regel som konfigurerar "Backend HTTP-inställningar" för att använda protokollet HTTPS istället för HTTP --> Backend pool --> Webbserver (måste ha ett TLS-certifikat installerat för www.contoso.com)
Lösning
Det krävs att DNS-namnet för TLS-certifikatet som är installerat på serverdelsservern matchar värdnamnet som konfigurerats i HTTP-serverdelsinställningarna, annars matchar inte den andra delen av kommunikationen från slutpunkt till slutpunkt som sker mellan instanserna av Application Gateway och serverdelen, misslyckas med "Uppströms SSL-certifikat matchar inte" och genererar ett serverfel: 502 – Webbservern fick ett ogiltigt svar när den fungerade som en gateway eller proxyserver