Přepsání hlaviček požadavků HTTP a odpovědí pomocí brány Aplikace Azure – Azure PowerShell

Tento článek popisuje, jak pomocí Azure PowerShellu nakonfigurovat instanci skladové položky služby Application Gateway v2 tak, aby přepisoval hlavičky HTTP v požadavcích a odpovědích.

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Než začnete

  • Abyste mohli dokončit kroky v tomto článku, musíte spustit Azure PowerShell místně. Musíte mít také nainstalovaný modul Az verze 1.0.0 nebo novější. Spusťte Import-Module Az a pak Get-Module Az určete verzi, kterou jste nainstalovali. Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell. Po ověření verze PowerShellu spusťte příkaz Login-AzAccount, abyste vytvořili připojení k Azure.
  • Potřebujete instanci skladové položky služby Application Gateway v2. V SKU v1 není podporováno přepsání hlaviček. Pokud skladovou položku v2 nemáte, vytvořte instanci skladové položky služby Application Gateway v2, než začnete.

Vytvoření požadovaných objektů

Pokud chcete nakonfigurovat přepsání hlaviček HTTP, musíte provést tento postup.

  1. Vytvořte objekty potřebné pro přepsání hlaviček HTTP:

    • RequestHeaderConfiguration: Slouží k určení polí hlavičky požadavku, která chcete přepsat, a novou hodnotu hlaviček.

    • ResponseHeaderConfiguration: Slouží k určení polí hlavičky odpovědi, která chcete přepsat, a novou hodnotu pro hlavičky.

    • ActionSet: Obsahuje konfigurace hlaviček požadavků a odpovědí zadaných dříve.

    • Podmínka: Volitelná konfigurace. Podmínky přepsání vyhodnocují obsah požadavků a odpovědí HTTP. K akci přepsání dojde, pokud požadavek http(S) nebo odpověď odpovídají podmínce přepsání.

      Pokud k akci přidružíte více než jednu podmínku, dojde k akci pouze tehdy, když jsou splněny všechny podmínky. Jinými slovy, operace je logická operace AND.

    • Přepisrule: Obsahuje více kombinací podmínek přepsání / přepsání podmínky.

    • RuleSequence: Volitelná konfigurace, která pomáhá určit pořadí, ve kterém se pravidla přepisují. Tato konfigurace je užitečná, pokud máte v sadě přepisů více pravidel přepsání. Nejprve se spustí pravidlo přepsání, které má nižší hodnotu sekvence pravidla. Pokud přiřadíte stejnou hodnotu sekvence pravidla dvěma přepsaným pravidlům, pořadí provádění není deterministické.

      Pokud explicitně nezadáte RuleSequence, nastaví se výchozí hodnota 100.

    • PřepsáníRuleSet: Obsahuje více pravidel přepsání, která budou přidružena k pravidlu směrování požadavků.

  2. Připojte rewriteRuleSet k pravidlu směrování. Konfigurace přepsání je připojena ke zdrojovému naslouchacímu procesu prostřednictvím pravidla směrování. Při použití základního pravidla směrování je konfigurace přepsání hlaviček přidružena ke zdrojovému naslouchacímu procesu a je globální přepsání hlaviček. Při použití pravidla směrování založeného na cestě se konfigurace přepsání hlaviček definuje na mapě cest URL. V takovém případě se vztahuje pouze na konkrétní oblast cesty lokality.

Můžete vytvořit více sad přepsání hlaviček HTTP a použít každou sadu přepsání pro více naslouchacích procesů. Pro konkrétní naslouchací proces ale můžete použít pouze jednu sadu přepsání.

Přihlášení k Azure

Connect-AzAccount
Select-AzSubscription -Subscription "<sub name>"

Zadání konfigurace pravidla přepsání hlaviček HTTP

V tomto příkladu upravíme adresu URL přesměrování přepsáním hlavičky umístění v odpovědi HTTP pokaždé, když hlavička umístění obsahuje odkaz na azurewebsites.net. K tomu přidáme podmínku, která vyhodnotí, jestli záhlaví umístění v odpovědi obsahuje azurewebsites.net. Použijeme vzor (https?)://.*azurewebsites.net(.*)$. A jako hodnotu hlavičky použijeme {http_resp_Location_1}://contoso.com{http_resp_Location_2} . Tato hodnota nahradí azurewebsites.netcontoso.com v záhlaví umístění.

$responseHeaderConfiguration = New-AzApplicationGatewayRewriteRuleHeaderConfiguration -HeaderName "Location" -HeaderValue "{http_resp_Location_1}://contoso.com{http_resp_Location_2}"
$actionSet = New-AzApplicationGatewayRewriteRuleActionSet -ResponseHeaderConfiguration $responseHeaderConfiguration
$condition = New-AzApplicationGatewayRewriteRuleCondition -Variable "http_resp_Location" -Pattern "(https?):\/\/.*azurewebsites\.net(.*)$" -IgnoreCase
$rewriteRule = New-AzApplicationGatewayRewriteRule -Name LocationHeader -ActionSet $actionSet -Condition $condition
$rewriteRuleSet = New-AzApplicationGatewayRewriteRuleSet -Name LocationHeaderRewrite -RewriteRule $rewriteRule

Načtení konfigurace služby Application Gateway

$appgw = Get-AzApplicationGateway -Name "AutoscalingAppGw" -ResourceGroupName "<rg name>"

Načtení konfigurace pravidla směrování požadavků

$reqRoutingRule = Get-AzApplicationGatewayRequestRoutingRule -Name rule1 -ApplicationGateway $appgw

Aktualizace aplikační brány pomocí konfigurace pro přepis hlaviček HTTP

V tomto příkladu by se sada přepsání přidružovala okamžitě k základnímu pravidlu směrování. V případě pravidla směrování založeného na cestě by přidružení ve výchozím nastavení nebylo povoleno. Sadu přepsání je možné povolit buď prostřednictvím kontroly cest, na kterých je potřeba ji použít prostřednictvím portálu, nebo zadáním konfigurace mapy cest URL, která specifikuje rewriteRuleSet pro každou možnost cesty.

Add-AzApplicationGatewayRewriteRuleSet -ApplicationGateway $appgw -Name $rewriteRuleSet.Name  -RewriteRule $rewriteRuleSet.RewriteRules
Set-AzApplicationGatewayRequestRoutingRule -ApplicationGateway $appgw -Name $reqRoutingRule.Name -RuleType $reqRoutingRule.RuleType -BackendHttpSettingsId $reqRoutingRule.BackendHttpSettings.Id -HttpListenerId $reqRoutingRule.HttpListener.Id -BackendAddressPoolId $reqRoutingRule.BackendAddressPool.Id -RewriteRuleSetId $rewriteRuleSet.Id
Set-AzApplicationGateway -ApplicationGateway $appgw

Odstranění pravidla přepsání

$appgw = Get-AzApplicationGateway -Name "AutoscalingAppGw" -ResourceGroupName "<rg name>"
Remove-AzApplicationGatewayRewriteRuleSet -Name "LocationHeaderRewrite" -ApplicationGateway $appgw
$requestroutingrule= Get-AzApplicationGatewayRequestRoutingRule -Name "rule1" -ApplicationGateway $appgw
$requestroutingrule.RewriteRuleSet= $null
set-AzApplicationGateway -ApplicationGateway $appgw

Další kroky

Další informace o tom, jak nastavit některé běžné případy použití, najdete v běžných scénářích přepsání hlaviček.