你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置请求和响应代理缓冲区

Azure 应用程序网关标准 v2 SKU 支持缓冲来自客户端的请求或响应(来自后端服务器)。 根据与应用程序网关交互的客户端的处理能力,可以使用这些缓冲区来配置数据包交付速度。

响应缓冲区

应用程序网关的响应缓冲区可以收集后端服务器发送的全部或部分响应数据包,然后再将它们发送给客户端。 默认在应用程序网关上启用响应缓冲,这对于适应缓慢的客户端很有用。 此设置可保护后端 TCP 连接,因为它们可以在应用程序网关收到完整响应后关闭,并根据客户端的处理速度工作。 这样,应用程序网关会继续按照客户端的速度提供响应。

请求缓冲区

同样,应用程序网关的请求缓冲区可以暂时存储整个或部分请求正文,然后同时将更大的上传请求转发给后端服务器。 默认在应用程序网关上启用“请求缓冲”设置,这有助于卸载后端服务器上重新组装较小数据包的处理功能。

注意

默认情况下,在应用程序网关资源上都启用了请求和响应缓冲区,但你可以选择单独配置它们。 此外,这些设置将应用于资源级别,不能为每个侦听器单独进行管理。


可以根据你的要求和观察到的与应用程序网关通信的客户端系统的性能,选择启用或禁用请求/响应缓冲区。


警告

强烈建议在生产网关上推出此功能之前,先测试和评估性能。

如何更改缓冲区设置?

可以使用 globalConfiguration 属性更改此设置。

Azure CLI 方法

响应缓冲区

az network application-gateway update --name <gw-name> --resource-group <rg-name> --set globalConfiguration.enableResponseBuffering=false

请求缓冲区

 az network application-gateway update --name <gw-name> --resource-group <rg-name> --set globalConfiguration.enableRequestBuffering=false

PowerShell 方法

新的应用程序网关

$AppGw02 = New-AzApplicationGateway -Name "ApplicationGateway02" -ResourceGroupName "ResourceGroup02" -Location $location -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting01 -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp01 -HttpListeners $listener01 -RequestRoutingRules $rule01 -Sku $sku -EnableRequestBuffering:$false -EnableResponseBuffering:$false

更新现有的应用程序网关

$appgw = Get-AzApplicationGateway -Name $appgwName -ResourceGroupName $rgname
$appgw.EnableRequestBuffering = $false
$appgw.EnableResponseBuffering = $false
Set-AzApplicationGateway -ApplicationGateway $appgw

ARM 模板方法

{
   "$schema":"https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
   "contentVersion":"1.0.0.0",
   "parameters":{      
   },
   "variables":{      
   },
   "resources":[
      {
         "type":"Microsoft.Network/applicationGateways",
         "apiVersion":"xxx-xx-xx",
         "name":"[parameters('applicationGateways_xxxx_x_xx_name')]",
         "location":"eastus",
         "tags":{            
         },
         "identity":{      
         },
         "properties":{
            "globalConfiguration":{
               "enableRequestBuffering":false,
               "enableResponseBuffering":false
            }
         }
      }
   ]
} 

有关参考,请访问用于 .NET 的 Azure SDK

限制

  • API 版本 2020-01-01 或更高版本应用于配置缓冲区。
  • 目前,门户和 PowerShell 不支持这些更改。
  • 如果正在运行应用程序网关的 WAF SKU,则无法禁用请求缓冲。 WAF 要求完整请求作为处理的一部分进行缓冲,因此,即使禁用应用程序网关中的请求缓冲,WAF 仍会缓冲请求。 响应缓冲不受 WAF 影响。