假设应用程序网关接收到一个请求http://contoso.com/images并配置为将其转发到 backendserver.contoso.com。使用基于路径的路由规则(/images/*
例如)。
我希望应用程序网关不保留/images
请求 URL 中的路径。我需要截断它,在这种情况下,请求将只是http://contoso.com/。之后的任何路径/images
都将保持不变。
可能吗?非常感谢任何帮助/线索。
假设应用程序网关接收到一个请求http://contoso.com/images并配置为将其转发到 backendserver.contoso.com。使用基于路径的路由规则(/images/*
例如)。
我希望应用程序网关不保留/images
请求 URL 中的路径。我需要截断它,在这种情况下,请求将只是http://contoso.com/。之后的任何路径/images
都将保持不变。
可能吗?非常感谢任何帮助/线索。
是的,您今天可以使用 PowerShell/CLI 执行此操作。在与池关联的后端 http 设置中,请指定 -Path 参数。例如 -
Add-AzureRmApplicationGatewayBackendHttpSettings -Path "/" -Name setting1 -Port 80 -Protocol Http -CookieBasedAffinity Disabled
如果-Path
根本没有指定,传入请求将按原样路由到后端 - 这是默认行为。当指定为"/"
它从 URI 中删除匹配路径时。如果指定为非空值,则使用指定的值代替匹配的路径。
Amsrivas 和 Stephens 的回答是正确的,但 poweshell CLI 似乎已经改变,至少 @ 版本 5.5.0 现在您必须使用以下命令执行此操作:
# Get gateway object
$AppGw = Get-AzureRmApplicationGateway -Name "YOUR GATEWAY NAME" -ResourceGroupName "YOUR GATEWAY RESOURCE GROUP"
# Show current settings
Get-AzureRmApplicationGatewayBackendHttpSettings -ApplicationGateway $AppGw
# Set path on local object (other values are whatever you want)
Set-AzureRmApplicationGatewayBackendHttpSettings -ApplicationGateway $AppGw -Name "YOUR SETTING NAME" -Port "80" -Protocol "Http" -CookieBasedAffinity "Disabled" -RequestTimeout 30 -Path "/"
# Commit changes back to Azure
$UpdatedAppGw = Set-AzureRmApplicationGateway -ApplicationGateway $AppGw
# Show new settings as applied in Azure
Get-AzureRmApplicationGatewayBackendHttpSettings -ApplicationGateway $UpdatedAppGw