Web应用程序前面的Azure WAF更改主机名



我已经在我的应用程序服务前面配置了Azure Web应用程序防火墙,它正在成功地传递请求。我已经按照以下微软文档中的说明进行了操作。

我有以下配置:

自定义域:测试。[customdomain].com DNS记录指向针对WAF配置的公共IP。自定义域也在Web应用程序上配置。

WAF有一个后端池,它被配置为使用具有以下记录的"IP地址或FQDN":[customwebsite].azurewebsites.net

当我导航到测试时。[customdomain].com我成功地收到了网站,但WAF在转发到应用程序服务时似乎正在重写请求。因此,我的应用程序服务收到请求,它的URL是[customwebsite].azurewebsites.net,而不是测试。[customdomain].com.

这是有意的吗?查看多租户文档,默认情况下不应该重写主机?

解决方案是确保在指定New-AzureRmApplicationGatewayBackendHttpSettings时不要使用选项-PickHostNameFromBackendAddress。我应该注意到了,但是这个设置告诉WAF使用BackendHttpSettings中指定的地址进行重写。

然后,您还需要重新配置探测器以指定手动主机名。例如,设置AzureRmApplicationGatewayProbeConfig时,不要指定-PickHostNameFromBackendHttpSettings。

对我来说,有效的方法是在HTTP设置中确保未选中-PickHostNameFromBackendAddress。此外,该接口不允许您设置-HostName,因此请转到PowerShell并设置-HostName和探测器,如下所示:

$GW = Get-AzureRmApplicationGateway -ResourceGroupName "MY-APP-WAF-RG" -Name "APP-WAF"
$PROBE = Get-AzureRmApplicationGatewayProbeConfig -ApplicationGateway $GW -Name "my-api-https-probe"
Set-AzureRmApplicationGatewayBackendHttpSettings -ApplicationGateway $GW -Probe $PROBE -HostName "my-api.example.org" -CookieBasedAffinity "enabled" -AffinityCookieName "AGAffinity" -Protocol "HTTPS" -Port 443 -Name "my-api-https-settings"
Set-AzureRmApplicationGateway -ApplicationGateway $GW

在探测器上,我还选择了-PickHostNameFromBackendHttpSettings。

使用上述方式,我有两个web应用程序,它们在WAF后面配置了自定义域和SSL。

设置这个的可怕经历。

最新更新