azure web 应用端到端 SSL 的 Azure 应用程序网关前端获取 404

Posted

技术标签:

【中文标题】azure web 应用端到端 SSL 的 Azure 应用程序网关前端获取 404【英文标题】:Azure application gateway front of azure web app end-to-end SSL gets 404 【发布时间】:2018-03-07 15:39:17 【问题描述】:

我正在尝试将 WAF 放在 azure Web 应用程序(无 ASE)的前面。 Web 应用使用 HTTPS (SSL *.azurewebsites.net) 运行。我已按照此 MS 文档中的说明进行操作:

https://docs.microsoft.com/en-us/azure/application-gateway/application-gateway-end-to-end-ssl-powershell

我的 powershell 一切都很顺利。没有问题!

后端池指向正确的 Web 应用程序域 (myapp.azurewebsites.net)。而且我可以看到后端运行状况检查显示为 HEALTHY!

我也想知道,在门户中,当我看到探针刀片时,主机名是空的。这可能是故意的,因为我在创建探针时通过了-PickHostNameFromBackendHttpSettings 开关。只是想提供更多背景信息。

但是,如果我尝试通过网关访问该站点,我会收到 404 - 找不到页面。

有人可以帮我找出问题吗?

【问题讨论】:

【参考方案1】:

404 是一个错误,表明您请求的文件(无论是 index.html 还是其他文件)在服务器上未找到,因此无法呈现给您。该错误中没有表明应用程序网关无法与之通信或以其他方式连接到您设置的 Web 应用程序的建议。如果应用程序网关无法与后端通信,您会看到的常见错误是 HTTP 502。

您想要做的事情是可能的,因此您的应用程序网关或应用服务中可能存在错误配置导致此 404。

下面链接的文章中可能有帮助的一段摘录是:

必须同时提供 Probe 配置上的开关 -PickHostNamefromBackendHttpSettings 和后端 http 设置上的 -PickHostNameFromBackendAddress 开关,Web 应用程序才能正常工作。

这很可能是您的错误的原因,但当然需要进一步调查。

您需要查看有关如何在 Web 应用程序前创建应用程序网关的文档。这些说明适用于 PowerShell。

https://docs.microsoft.com/en-us/azure/application-gateway/application-gateway-web-app-powershell

【讨论】:

您好刘易斯,感谢您的回复。非常感激。但是,我想这里还有其他问题。我确实使用了 MSDN 推荐的方式,以及那些 pickhostfrombackend* 开关。但是总是得到 404 并且后端运行状况显示健康。最困扰我的问题是没有办法进一步调试这个..?我为网关启用了诊断日志 - 那里也没有显示任何有趣的数据。 在进一步调试方面,不幸的是不在 App Gateway 本身内。也许最好的方法是通过启用其日志并浏览它们来查看后端(Web 应用程序)是否正在生成 404。我要关注的事实是,有一个 404 来自某个地方,应用程序网关必须以某种方式接收它。【参考方案2】:

我不是 100% 确定,但我现在猜到了这个问题。 我所做的是,仅手动创建前端侦听器并开始工作。然后我猜,罪魁祸首可能是证书。 我使用具有相同证书的 ARM 模板再次创建了脚本,并且一切正常。我猜第一次使用 power shell 上传 pfx 文件时出了点问题。遗憾的是错误代码有点误导,花了一些时间才弄清楚在哪里看。

感谢您的热心帮助!干杯。

【讨论】:

以上是关于azure web 应用端到端 SSL 的 Azure 应用程序网关前端获取 404的主要内容,如果未能解决你的问题,请参考以下文章

端到端测试 RESTful Web 服务 (Rails)

端到端机器学习:从数据收集到部署

应用程序负载均衡器 (ELBv2) SSL 直通

C# 和 typescript 之间 JSON 的端到端类型安全

端到端测试中遗留应用程序的代码覆盖率

vue-cli 脚手架基于Nightwatch的端到端测试环境的过程