公共负载平衡器后面的网站通过HTTPS在Azure虚拟机上给出502错误

Azure公共负载平衡器后面有一个Azure虚拟机。 VM正在运行一个网站。 我可以通过HTTP在浏览器中加载网站没有问题,但是当我尝试HTTPS时,我得到一个502错误。

我已经设置了一个负载均衡规则来发送443到虚拟机。 我通过Network Security Group允许443上的所有连接。 我三重检查了configuration,并一直在看这个小时,但无法取得任何进展。

另外一个线索是,如果我远程访问虚拟机,请将我的DNS名称设置为指向虚拟机的内部IP(10.1.2.4,而不是指向负载平衡器的公共IP),然后在浏览器中加载该站点它工作的HTTPS。 我不知道这是什么意思,除了似乎我的IISconfiguration不是问题。

任何想法将非常感激,我很乐意提供更多的细节。 谢谢!

编辑1
在我的Azure负载平衡器中,当我删除了我的HTTPS负载平衡规则,而是添加了一个NAT规则,将443通信量直接redirect到我的一个虚拟机之后,HTTPS完美运行。 所以它似乎是特定于我的configuration使用HTTPS与负载平衡规则。

我终于搞清楚了这个问题,希望能省几个小时。 问题原来是我的负载平衡器探测器设置和我的网站的IIS绑定的组合。

在虚拟机的IIS中,我configuration了2个网站。 由于2个网站共享1个公共IP,因此在IIS中设置绑定时使用主机名。 所以基本上我的绑定被configuration为发送www.site.comstream量到站点#1和test.site.comstream量到站点#2。 我没有设置默认的绑定来处理端口80的stream量,而不是那些2的DNS名称。所以如果你去http:// [internal_ip_or_machine_name]没有页面被加载,因为没有绑定来处理它。

我的探测器是一个设置为在端口80上打击/probe.html的HTTP探测器。问题是,由于探测器对我使用的DNS名称一无所知,因此探测器可能会遇到http:// [internal_ip_or_machine_name] /probe.html , URL没有绑定来处理它在IIS中。 所以探测失败,并假设我的所有虚拟机脱机。 这导致了502错误。

不知道我会做什么修复。 我将在IIS中为端口80添加默认绑定,指向生产网站,或者我将使用TCP探针。

真正让我陷入循环的是,HTTP正常工作,正如我上面提到的。 在testingHTTP时,我必须碰巧有一个默认的IIS绑定,然后在testingHTTPS之前删除它。 现在,如果没有有效的探针,则HTTP和HTTPS都会失败。 有了一个有效的探测器,两个工作。