我已经在我的App Service前面配置了一个Azure Web应用程序防火墙,它成功地传递了请求。我已按照以下microsoft docs的说明进行操作。
我有以下配置:
自定义域:test。[customdomain] .com DNS记录指向针对WAF配置的公共IP。定制域也已在Web App上配置。
WAF具有一个后端池,该后端池被配置为使用“ IP地址或FQDN”,并具有以下记录: [customwebsite] .azurewebsites.net
当我导航到test。[customdomain] .com时,我已经成功接收了该网站,但是看起来好像WAF在转发到App Service时正在重写请求。 这样,我的App Service收到了请求,并且它具有URL [customwebsite] .azurewebsites.net,而不是test。[customdomain] .com。
这是故意的吗?审核multi-tenant documentation,默认情况下不应该重写主机吗?
答案 0 :(得分:2)
解决方案是确保在指定New-AzureRmApplicationGatewayBackendHttpSettings时不要使用选项-PickHostNameFromBackendAddress。我应该注意到,但是此设置告诉WAF使用BackendHttpSettings中指定的地址进行重写。
然后,您还需要重新配置探针以指定手动主机名。例如设置AzureRmApplicationGatewayProbeConfig时请勿指定-PickHostNameFromBackendHttpSettings。
答案 1 :(得分:0)
对我来说,有效的方法是在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。
使用上述方法,我在WAF后面配置了两个具有自定义域和SSL的Web应用。
糟糕的体验。