Sdílet prostřednictvím


Řešení chyb Chybná brána ve službě Application Gateway

Zjistěte, jak řešit chyby 502, ke které došlo při používání brány Aplikace Azure lication.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Přehled

Po nakonfigurování aplikační brány se může zobrazit jedna z chyb: Chyba serveru 502 – Webový server obdržel neplatnou odpověď, když funguje jako brána nebo proxy server. K této chybě může dojít z následujících hlavních důvodů:

Problém se skupinou zabezpečení sítě, uživatelem definovanou trasou nebo vlastním DNS

Příčina

Pokud je přístup k back-endu zablokovaný kvůli skupině zabezpečení sítě, trasy definované uživatelem nebo vlastnímu DNS, instance aplikační brány se nemůžou spojit s back-endovým fondem. Tento problém způsobuje selhání sondy, což vede k chybám 502.

Skupina zabezpečení sítě nebo trasy definované uživatelem může být v podsíti služby Application Gateway nebo podsíti, ve které jsou nasazené virtuální počítače aplikace.

Podobně může přítomnost vlastního DNS ve virtuální síti způsobit také problémy. Plně kvalifikovaný název domény používaný pro členy back-endového fondu se nemusí správně přeložit uživatelem nakonfigurovaným serverem DNS pro virtuální síť.

Řešení

Pomocí následujících kroků ověřte konfiguraci skupiny zabezpečení sítě, trasy definované uživatelem a DNS:

  1. Zkontrolujte skupiny zabezpečení sítě přidružené k podsíti služby Application Gateway. Ujistěte se, že komunikace s back-endem není blokovaná. Další informace najdete v tématu Skupiny zabezpečení sítě.

  2. Zkontrolujte trasu definovanou uživatelem přidruženou k podsíti služby Application Gateway. Ujistěte se, že trasu definovanou uživatelem nesměruje provoz z back-endové podsítě. Zkontrolujte například směrování na síťová virtuální zařízení nebo výchozí trasy inzerované do podsítě aplikační brány přes ExpressRoute nebo VPN.

    $vnet = Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName
    Get-AzVirtualNetworkSubnetConfig -Name appGwSubnet -VirtualNetwork $vnet
    
  3. Kontrola efektivní skupiny zabezpečení sítě a směrování pomocí back-endového virtuálního počítače

    Get-AzEffectiveNetworkSecurityGroup -NetworkInterfaceName nic1 -ResourceGroupName testrg
    Get-AzEffectiveRouteTable -NetworkInterfaceName nic1 -ResourceGroupName testrg
    
  4. Zkontrolujte přítomnost vlastního DNS ve virtuální síti. DNS je možné zkontrolovat tak, že se podíváte na podrobnosti vlastností virtuální sítě ve výstupu.

    Get-AzVirtualNetwork -Name vnetName -ResourceGroupName rgName 
    DhcpOptions            : {
                               "DnsServers": [
                                 "x.x.x.x"
                               ]
                             }
    
  5. Pokud je k dispozici, ujistěte se, že server DNS dokáže správně přeložit plně kvalifikovaný název domény člena back-endového fondu.

Problémy s výchozí sondou stavu

Příčina

Chyby 502 můžou být také časté indikátory, že výchozí sonda stavu nemůže dosáhnout back-endových virtuálních počítačů.

Když je instance aplikační brány zřízená, automaticky nakonfiguruje výchozí sondu stavu pro každý BackendAddressPool pomocí vlastností BackendHttpSetting. K nastavení této sondy se nevyžaduje žádný vstup uživatele. Konkrétně když je nakonfigurované pravidlo vyrovnávání zatížení, vytvoří se přidružení mezi BackendHttpSetting a BackendAddressPool. Pro každé z těchto přidružení je nakonfigurovaná výchozí sonda a služba Application Gateway spustí pravidelné připojení kontroly stavu ke každé instanci v BackendAddressPoolu na portu zadaném v elementu BackendHttpSetting.

Následující tabulka uvádí hodnoty přidružené k výchozí sondě stavu:

Vlastnost sondy Hodnota Popis
Adresa URL sondy http://127.0.0.1/ Cesta url
Interval 30 Interval sondy v sekundách
Časový limit 30 Časový limit sondy v sekundách
Prahová hodnota pro poškozený stav 3 Počet opakování sondy. Back-endový server se označí po po sobě jdoucím počtu selhání sondy k dosažení prahové hodnoty, která není v pořádku.

Řešení

  • Hodnota hostitele požadavku bude nastavena na 127.0.0.1. Ujistěte se, že je nakonfigurovaná výchozí lokalita a naslouchá na adrese 127.0.0.1.
  • Protokol požadavku je určen protokolem BackendHttpSetting.
  • Cesta URI bude nastavena na /hodnotu .
  • Pokud BackendHttpSetting určuje jiný port než 80, měl by být výchozí web nakonfigurovaný tak, aby naslouchal na tomto portu.
  • Volání by protocol://127.0.0.1:port mělo vrátit kód výsledku HTTP 200. Tento kód by se měl vrátit během 30sekundového časového limitu.
  • Ujistěte se, že je nakonfigurovaný port otevřený a nakonfigurovaný port neblokují žádná pravidla brány firewall ani skupiny zabezpečení sítě Azure.
  • Pokud se klasické virtuální počítače Nebo cloudová služba Azure používají s plně kvalifikovaným názvem domény nebo veřejnou IP adresou, ujistěte se, že je otevřený odpovídající koncový bod .
  • Pokud je virtuální počítač nakonfigurovaný přes Azure Resource Manager a je mimo virtuální síť, ve které je nasazená aplikační brána, musí být skupina zabezpečení sítě nakonfigurovaná tak, aby umožňovala přístup na požadovaném portu.

Další informace najdete v tématu Konfigurace infrastruktury služby Application Gateway.

Problémy s vlastní sondou stavu

Příčina

Vlastní sondy stavu umožňují větší flexibilitu výchozího chování sond. Při použití vlastních testů můžete nakonfigurovat interval testu, adresu URL, cestu k testování a počet neúspěšných odpovědí, které se mají přijmout, než označíte instanci back-endového fondu jako poškozenou.

Přidají se následující další vlastnosti:

Vlastnost sondy Popis
Name Název sondy. Tento název se používá k odkazu na sondu v nastavení http back-endu.
Protokol Protokol použitý k odeslání sondy. Sonda používá protokol definovaný v nastavení HTTP back-endu.
Hostitelský počítač Název hostitele pro odeslání testu. Platí pouze v případě, že je ve službě Application Gateway nakonfigurováno více lokalit. Toto se liší od názvu hostitele virtuálního počítače.
Cesta Relativní cesta sondy. Platná cesta začíná od /. Sonda se odešle do <protokolu>://<host>:<port><path.>
Interval Interval sondy v sekundách. Toto je časový interval mezi dvěma po sobě jdoucími sondami.
Časový limit Časový limit sondy v sekundách vypršel. Pokud během tohoto časového limitu nepřijde platná odpověď, sonda se označí jako neúspěšná.
Prahová hodnota pro poškozený stav Počet opakování sondy. Back-endový server se označí po po sobě jdoucím počtu selhání sondy k dosažení prahové hodnoty, která není v pořádku.

Řešení

Ověřte, že je správně nakonfigurovaná vlastní sonda stavu, jak je znázorněno v předchozí tabulce. Kromě předchozích kroků pro řešení potíží se ujistěte, že platí následující:

  • Ujistěte se, že je sonda správně zadaná podle průvodce.
  • Pokud je služba Application Gateway nakonfigurovaná pro jednu lokalitu, ve výchozím nastavení by měl být název hostitele zadán jako 127.0.0.1, pokud není v vlastní sondě nakonfigurovaný jinak.
  • Ujistěte se, že volání http://< host>:<port><cesta> vrátí kód výsledku HTTP 200.
  • Ujistěte se, že interval, časový limit a není v pořádku.
  • Pokud používáte sondu HTTPS, ujistěte se, že back-endový server nevyžaduje SNI konfigurací záložního certifikátu na samotném back-endovém serveru.

Vypršel časový limit žádosti

Příčina

Při přijetí požadavku uživatele aplikační brána na požadavek použije nakonfigurovaná pravidla a přesměruje ho do instance back-endového fondu. Po nakonfigurovatelný časový interval počká na odpověď z back-endové instance. Ve výchozím nastavení je tento interval 20 sekund. Ve službě Application Gateway v1 platí, že pokud aplikační brána během tohoto intervalu neobdrží odpověď z back-endové aplikace, na požadavek uživatele se vrátí chyba 502. Ve službě Application Gateway v2 platí, že pokud aplikační brána během tohoto intervalu neobdrží odpověď z back-endové aplikace, bude požadavek vyzkoušen proti druhému členu backendového fondu. Pokud druhý požadavek selže, uživateli se zobrazí chyba 504.

Řešení

Služba Application Gateway umožňuje nakonfigurovat toto nastavení prostřednictvím BackendHttpSetting, které lze poté použít pro různé fondy. Různé back-endové fondy mohou mít jinou konfiguraci BackendHttpSetting a jiný časový limit požadavku.

    New-AzApplicationGatewayBackendHttpSettings -Name 'Setting01' -Port 80 -Protocol Http -CookieBasedAffinity Enabled -RequestTimeout 60

Prázdný fond BackendAddressPool

Příčina

Pokud služba Application Gateway nemá v back-endovém fondu adres nakonfigurované žádné virtuální počítače ani škálovací sadu virtuálních počítačů, nemůže směrovat žádnou žádost zákazníka a odeslat chybnou bránu.

Řešení

Ujistěte se, že back-endový fond adres není prázdný. Můžete to provést prostřednictvím PowerShellu, rozhraní příkazového řádku nebo portálu.

Get-AzApplicationGateway -Name "SampleGateway" -ResourceGroupName "ExampleResourceGroup"

Výstup z předchozí rutiny by měl obsahovat neprázdný back-endový fond adres. Následující příklad ukazuje dva vrácené fondy, které jsou nakonfigurované s plně kvalifikovaným názvem domény nebo IP adresami pro back-endové virtuální počítače. Stav zřizování BackendAddressPool musí být Úspěšný.

BackendAddressPoolsText:

[{
    "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"
}]

Instance, které nejsou v pořádku, v BackendAddressPool

Příčina

Pokud všechny instance BackendAddressPool nejsou v pořádku, služba Application Gateway nemá žádný back-end pro směrování požadavků uživatelů. To může být také případ, kdy jsou instance back-endu v pořádku, ale nemají nasazenou požadovanou aplikaci.

Řešení

Ujistěte se, že jsou instance v pořádku a že je aplikace správně nakonfigurovaná. Zkontrolujte, jestli back-endové instance můžou reagovat na příkaz ping z jiného virtuálního počítače ve stejné virtuální síti. Pokud je nakonfigurovaný veřejný koncový bod, ujistěte se, že je žádost prohlížeče pro webovou aplikaci použitelná.

Nadřazený certifikát SSL neodpovídá

Příčina

Certifikát TLS nainstalovaný na back-endových serverech neodpovídá názvu hostitele přijatému v hlavičce požadavku hostitele.

Ve scénářích, kdy je povolený protokol TLS typu End-to-end, je potřeba upravit odpovídající nastavení HTTP back-endu a změnit konfiguraci nastavení back-endového protokolu na HTTPS, je nutné zajistit, aby CNAME certifikátu TLS nainstalovaného na back-endových serverech odpovídalo názvu hostitele přicházejícímu do back-endu v požadavku hlavičky hostitele HTTP.

Připomínáme, že účinek povolení možnosti "Nastavení HTTP back-endu" místo PROTOKOLU HTTP bude druhou částí komunikace mezi instancemi služby Application Gateway a back-endovými servery šifrované pomocí protokolu TLS.

Vzhledem k tomu, že služba Application Gateway ve výchozím nastavení odesílá stejnou hlavičku hostitele HTTP do back-endu, jakou přijímá od klienta, budete muset zajistit, aby byl certifikát TLS nainstalovaný na back-endovém serveru, vystaven s názvem CNAME, který odpovídá názvu hostitele přijatému tímto back-endovým serverem v hlavičce hostitele HTTP. Mějte na paměti, že pokud neurčíte jinak, bude tento název hostitele stejný jako název přijatý od klienta.

Příklad:

Představte si, že máte službu Application Gateway, která bude obsluhovat požadavky https pro www.contoso.com domény. Můžete mít doménu contoso.com delegovanou do veřejné zóny Azure DNS a záznam DNS v této zóně odkazující www.contoso.com na veřejnou IP adresu konkrétní služby Application Gateway, která bude obsluhovat požadavky.

Na této službě Application Gateway byste měli mít naslouchací proces pro hostitele www.contoso.com s pravidlem, které má vynucené nastavení HTTP založené na použití protokolu HTTPS (zajištění koncového šifrování TLS). Stejné pravidlo by mohlo nakonfigurovat back-endový fond se dvěma virtuálními počítači se službou IIS jako webovými servery.

Jak víme, že povolení protokolu HTTPS v nastavení zálohovaného protokolu HTTP pravidla způsobí druhou část komunikace, která probíhá mezi instancemi služby Application Gateway a servery v back-endu, aby používala protokol TLS.

Pokud back-endové servery nemají certifikát TLS vydaný pro CNAME www.contoso.com nebo *.contoso.com, požadavek selže s chybou serveru: 502 – Webový server obdržel neplatnou odpověď, když funguje jako brána nebo proxy server , protože nadřazený certifikát SSL (certifikát nainstalovaný na back-endových serverech) neodpovídá názvu hostitele v hlavičce hostitele. a proto vyjednávání tls selže.

www.contoso.com –> front-endová IP adresa APP GW –> Naslouchací proces s pravidlem, které konfiguruje nastavení HTTP back-endu tak, aby používalo protokol HTTPS místo HTTP – Back-endový> fond –> webový server (musí mít nainstalovaný certifikát TLS pro www.contoso.com).

Řešení

Vyžaduje se, aby CNAME certifikátu TLS nainstalovaného na back-endovém serveru odpovídal názvu hostitele nakonfigurovaného v nastavení back-endu HTTP, jinak druhá část komunikace typu End-to-end, která probíhá mezi instancemi služby Application Gateway a back-endem, selže s chybou upstreamového certifikátu SSL a vrátí chybu serveru: 502 – Webový server obdržel neplatnou odpověď, když funguje jako brána nebo proxy server

Další kroky

Pokud předchozí kroky problém nevyřeší, otevřete lístek podpory.