이 문서에서는 Azure PowerShell을 사용하여 요청 및 응답에서 HTTP 헤더를 다시 작성하도록 Application Gateway v2 SKU 인스턴스를 구성하는 방법을 설명합니다. 헤더 다시 쓰기를 사용하면 요청 및 응답 패킷이 클라이언트와 백 엔드 풀 간에 이동하는 동안 HTTP 헤더를 추가, 제거 또는 업데이트할 수 있습니다.
Azure 구독이 없는 경우, 시작하기 전에 무료 계정을 만드십시오.
필수 조건
시작하기 전에 다음 요구 사항이 있는지 확인합니다.
-
Azure PowerShell: Azure PowerShell을 로컬로 설치하거나 Azure Cloud Shell에 액세스해야 합니다. Azure PowerShell Az 모듈 버전 1.0.0 이상이 필요합니다. 버전을 확인하려면
Get-Module -ListAvailable Az을(를) 실행합니다. 업그레이드해야 하는 경우 Azure PowerShell 모듈 설치를 참조하세요. -
Azure 연결: PowerShell 버전을 확인한 후 실행
Connect-AzAccount하여 Azure로 인증합니다. - Application Gateway v2: 기존 Application Gateway v2 SKU 인스턴스가 필요합니다. 헤더 다시 쓰기는 v2 SKU(Standard_v2 또는 WAF_v2)에서만 지원됩니다. 없는 경우 시작하기 전에 Application Gateway v2 SKU 인스턴스를 만듭니다.
- 적절한 권한: Application Gateway 리소스에 대한 기여자 또는 소유자 권한이 있는지 확인합니다.
중요합니다
헤더 다시 쓰기 기능은 Application Gateway v2 SKU에서만 사용할 수 있습니다. v1 SKU는 이 기능을 지원하지 않습니다.
HTTP 헤더 다시 쓰기 구성 요소 이해
HTTP 헤더 다시 쓰기를 구성하려면 다음 구성 요소를 특정 순서로 이해하고 만들어야 합니다.
핵심 구성 요소
RequestHeaderConfiguration: 다시 쓰려는 요청 헤더 필드와 해당 새 값을 지정합니다. 이 구성 요소를 사용하여 백 엔드 서버에 도달하기 전에 클라이언트 요청의 헤더를 수정합니다.
ResponseHeaderConfiguration: 다시 작성하려는 응답 헤더 필드와 해당 새 값을 지정합니다. 이 구성 요소를 사용하여 클라이언트에 도달하기 전에 서버 응답의 헤더를 수정합니다.
ActionSet: 지정된 요청 및 응답 헤더의 구성을 포함합니다. 각 작업 집합은 수행할 헤더 수정의 컬렉션을 나타냅니다.
- 조건: 선택적 구성입니다. 조건을 다시 작성하면 HTTP(S) 요청 및 응답의 콘텐츠가 평가됩니다. 다시 쓰기 작업은 HTTP(S) 요청 또는 응답이 다시 쓰기 조건과 일치하는 경우 발생합니다.
비고
작업과 연결된 여러 조건은 논리 AND 작업을 사용합니다. 작업을 실행하려면 모든 조건을 충족해야 합니다.
RewriteRule: 여러 다시 쓰기 작업과 다시 쓰기 조건을 결합합니다. 각 규칙은 헤더를 수정하는 시기와 방법을 정의합니다.
RuleSequence (선택 사항): 다시 쓰기 집합에 여러 개의 다시 쓰기 규칙이 있는 경우 실행 순서를 결정합니다. 시퀀스 값이 낮은 규칙이 먼저 실행됩니다. 값을 지정하지 않으면 기본값은 100입니다.
경고
동일한 시퀀스 값을 여러 규칙에 할당하면 실행 순서가 결정적이지 않습니다.
RewriteRuleSet: 요청 라우팅 규칙과 연결된 여러 개의 다시 작성된 규칙을 포함합니다.
애플리케이션 범위
다시 쓰기 구성 범위는 라우팅 규칙 유형에 따라 달라집니다.
- 기본 라우팅 규칙: 헤더 다시 쓰기 구성은 연결된 수신기에 대한 모든 요청에 전역적으로 적용됩니다.
- 경로 기반 라우팅 규칙: 헤더 다시 쓰기 구성은 URL 경로 맵에 정의된 특정 URL 경로 패턴과 일치하는 요청에만 적용됩니다.
중요합니다
여러 HTTP 헤더 다시 쓰기 집합을 만들고 각 집합을 여러 수신기에 적용할 수 있지만 한 개의 다시 쓰기 집합만 특정 수신기에 적용할 수 있습니다.
Azure를 사용하여 인증
헤더 다시 쓰기 규칙을 구성하기 전에 Azure에서 인증하고 구독을 선택합니다.
Connect-AzAccount
Select-AzSubscription -Subscription "<sub name>"
HTTP 헤더 다시 쓰기 규칙 구성 지정
이 예제에서는 위치 헤더에 azurewebsite.net 대한 참조가 포함될 때마다 HTTP 응답에서 위치 헤더를 다시 작성하여 리디렉션 URL을 수정합니다. 이 수정을 수행하려면 응답의 위치 헤더에 azurewebsite.net 포함되어 있는지 여부를 평가하는 조건을 추가합니다. 패턴을 (https?)://.*azurewebsite.net(.*)$사용합니다. 헤더 값으로 사용합니다 {http_resp_Location_1}://contoso.com{http_resp_Location_2} . 이 값은 위치 헤더에서 azurewebsite.net을 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
애플리케이션 게이트웨이의 구성 검색
$appgw = Get-AzApplicationGateway -Name "AutoscalingAppGw" -ResourceGroupName "<rg name>"
요청 라우팅 규칙 구성 검색
헤더 다시 쓰기 구성을 적용하려는 특정 요청 라우팅 규칙을 가져옵니다.
$reqRoutingRule = Get-AzApplicationGatewayRequestRoutingRule -Name rule1 -ApplicationGateway $appgw
HTTP 헤더를 다시 쓰기 위한 구성으로 애플리케이션 게이트웨이 업데이트
이 예제에서는 다시 쓰기 집합이 기본 회람 규칙에 즉시 연결됩니다. 경로 기반 라우팅 규칙에서 연결은 기본적으로 사용하도록 설정되지 않습니다. 다시 쓰기 세트는 포털을 통해 적용해야 하는 경로를 확인하거나 각 경로에 RewriteRuleSet를 지정하여 URL 경로 맵 구성을 제공하는 방법으로 사용할 수 있습니다.
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
다시 쓰기 규칙 제거(선택 사항)
Application Gateway에서 다시 쓰기 규칙 집합을 제거해야 하는 경우 다음 단계를 사용합니다.
# 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"
다음 단계
이제 HTTP 헤더 다시 쓰기 규칙을 구성하는 방법을 배웠으므로 다음 관련 문서를 살펴보세요.
일반적인 시나리오: 보안 헤더, 사용자 지정 라우팅 및 백 엔드 서버 통합 패턴을 비롯한 일반적인 헤더 다시 쓰기 시나리오 에 대해 알아봅니다.
모니터링 및 문제 해결: 헤더 다시 쓰기 작업을 모니터링하고 문제를 해결하도록 Application Gateway 진단을 설정합니다.