Sdílet prostřednictvím


Přepsání hlaviček požadavků HTTP a odpovědí pomocí služby Azure Application Gateway – 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. Přepsání hlaviček umožňuje přidávat, odebírat nebo aktualizovat hlavičky HTTP během přenosu paketů žádostí a odpovědí mezi klientem a koncovými servery.

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

Požadavky

Než začnete, ujistěte se, že máte následující požadavky:

  • Azure PowerShell: Potřebujete místně nainstalovaný Azure PowerShell nebo přístup ke službě Azure Cloud Shell. Vyžaduje se modul Az Azure PowerShellu verze 1.0.0 nebo novější. Pokud chcete zkontrolovat verzi, spusťte Get-Module -ListAvailable Azpříkaz . Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell.
  • Připojení Azure: Po ověření verze PowerShellu spusťte Connect-AzAccount ověření v Azure.
  • Application Gateway v2: Potřebujete existující instanci skladové položky služby Application Gateway v2. Přepsání hlaviček se podporuje jenom v SKU v2 (Standard_v2 nebo WAF_v2). Pokud žádný nemáte, vytvořte instanci Application Gateway v2 SKU (specifikace produktu) předtím, než začnete.
  • Správná oprávnění: Ujistěte se, že máte oprávnění přispěvatele nebo vlastníka prostředku služby Application Gateway.

Důležité

Funkce přepsání hlaviček je k dispozici pouze u skladové položky služby Application Gateway v2. Skladová položka v1 tuto funkci nepodporuje.

Porozumění komponentám přepisování hlaviček HTTP

Pokud chcete nakonfigurovat přepsání hlaviček HTTP, musíte pochopit a vytvořit následující komponenty v určitém pořadí:

Základní komponenty

  1. RequestHeaderConfiguration: Určuje pole hlavičky požadavku, která chcete přepsat, a jejich nové hodnoty. Pomocí této komponenty můžete upravit hlavičky v požadavcích klientů předtím, než se dostanou k back-endovým serverům.

  2. ResponseHeaderConfiguration: Určuje pole hlavičky odpovědi, která chcete přepsat, a jejich nové hodnoty. Pomocí této komponenty můžete upravit hlavičky v odpovědích serveru, než se dostanou k klientovi.

  3. ActionSet: Obsahuje konfigurace zahrnující hlavičky zadaného požadavku a odpovědi. Každá sada akcí představuje kolekci úprav hlaviček, které se mají provést.

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

    Poznámka:

    Více podmínek přidružených k akci používá logickou operaci AND – všechny podmínky musí být splněny, aby se akce spustila.

  4. RewriteRule: Kombinuje více akcí přepisování a podmínek přepisování. Každé pravidlo definuje, kdy a jak upravit hlavičky.

  5. RuleSequence (volitelné): Určuje pořadí provádění, pokud máte v množině pravidel pro přepis více přepisovacích pravidel. Pravidla s nižšími sekvenčními hodnotami se spouští jako první. Pokud nezadáte hodnotu, výchozí hodnota je 100.

    Výstraha

    Pokud přiřadíte stejnou sekvenční hodnotu více pravidlům, pořadí provádění se stane ne deterministickým.

  6. PřepsatRuleSet: Obsahuje více přepsaných pravidel přidružených k pravidlu směrování požadavku.

Obor aplikace

Obor konfigurace přepsání závisí na typu pravidla směrování:

  • Základní pravidlo směrování: Konfigurace přepsání hlaviček platí globálně pro všechny požadavky přidruženého naslouchacího procesu.
  • Pravidlo směrování založené na cestě: Konfigurace přepsání hlaviček se vztahuje pouze na požadavky odpovídající konkrétním vzorům cest URL definovaným v mapě cest URL.

Důležité

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

Ověřování pomocí Azure

Před konfigurací pravidel přepsání hlaviček se ověřte v Azure a vyberte své předplatné:

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

Určete konfiguraci pravidla pro přepisová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 azurewebsite.net. K provedení této úpravy přidáme podmínku, která vyhodnotí, jestli hlavička umístění v odpovědi obsahuje azurewebsite.net. Používáme vzor (https?)://.*azurewebsite.net(.*)$. A používáme {http_resp_Location_1}://contoso.com{http_resp_Location_2} ji jako hodnotu hlavičky. Tato hodnota v záhlaví umístění nahradí azurewebsite.net s contoso.com.

$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?):\/\/.*azurewebsite\.net(.*)$" -IgnoreCase
$rewriteRule = New-AzApplicationGatewayRewriteRule -Name LocationHeader -ActionSet $actionSet -Condition $condition
$rewriteRuleSet = New-AzApplicationGatewayRewriteRuleSet -Name LocationHeaderRewrite -RewriteRule $rewriteRule

Načtěte konfiguraci vaší aplikační brány

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

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

Získejte konkrétní pravidlo směrování požadavků, ve kterém chcete použít konfiguraci přepsání hlaviček:

$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 pravidle směrování založeném na cestě by přidružení ve výchozím nastavení nebylo povoleno. Sadu přepsání je možné povolit buď tím, že zkontrolujete cesty, na kterých se má použít prostřednictvím portálu, nebo zadáním konfigurace mapování URL cest, která specifikuje RewriteRuleSet pro každou možnou cestu.

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

Odeberte pravidlo přepsání (volitelné)

Pokud potřebujete odebrat sadu pravidel přepsání ze služby Application Gateway, postupujte následovně:

# Retrieve the current Application Gateway configuration
$appgw = Get-AzApplicationGateway -Name "AutoscalingAppGw" -ResourceGroupName "<rg name>"

# Remove the rewrite rule set association from the routing rule first
$requestRoutingRule = Get-AzApplicationGatewayRequestRoutingRule -Name "rule1" -ApplicationGateway $appgw

# Clear the rewrite rule set reference
$requestRoutingRule.RewriteRuleSet = $null

# Remove the rewrite rule set from the Application Gateway
Remove-AzApplicationGatewayRewriteRuleSet -Name "LocationHeaderRewrite" -ApplicationGateway $appgw

# Apply the changes
Set-AzApplicationGateway -ApplicationGateway $appgw

Write-Output "Rewrite rule set removed successfully"

Další kroky

Teď, když jste se dozvěděli, jak nakonfigurovat pravidla přepsání hlaviček HTTP, projděte si tyto související články: