我们运营一个使用WCF托管的网站。 该网站托管在:https://jsfiddle.net/a72t14j0/上,并使用以下命令注册ssl certicate:
netsh http add sslcert hostnameport=foo.com:443
当我们浏览服务器上的网站时,一切正常,证书有效。
服务器前面有一个负载均衡,可以监听bar.com,然后将请求重定向到我们的服务器。 负载均衡器不会重写get URL,而只会重写Host Header。
重写的标题如下所示:
GET https://foo.com/ HTTP/1.1
Host: bar.com
Connection: keep-alive
现在我们遇到一些问题,表明在这种情况下ssl证书无效。
Loadbalancer本身已注册一个监听https://foo.com
的证书问题:
答案 0 :(得分:2)
好吧,参考RFC2616:
如果Request-URI是绝对URI,则主机是其中的一部分 Request-URI中。请求中的任何主机头字段值必须是 忽略。
那么,回到你的问题: 它是允许的但是一个坏主意,因为它会造成混乱,更好地使用相对路径。即
GET /path HTTP/1.1
而不是
GET https://foo.com/path HTTP/1.1.
修改loadbalance配置以执行此操作。或者使两个值相同。
如果Host标头的值与请求URI不同,则URI优先于Hosts标头。