背景
我有一个场景,我运行两个网站,网站A是托管在服务器2016运行IIS 10和网站B是托管在CentOS 6运行Apache2.2。这两个网站都使用HTTPS提供服务,并且在本地网络上运行得很好。公开地,我在IIS服务器上使用SNI和URL重写规则来访问Apache2.2服务器。
大多数用户代理可以无问题地访问网站B,但是iOS会报告错误“未能加载资源操作无法完成.协议错误”并呈现一个空白屏幕。虽然Apache2.2不能支持这些请求,但我已经确定了与提供HTTP/2响应的IIS相关的原因。
问题
是否有任何方法可以在IIS 10上的特定站点上禁用HTTP/2响应?我发现了很多完全禁用它的说明,但是性能的提高在网站A上是不可忽视的。
发布于 2018-07-22 10:02:25
我不知道该怎么做。HTTP/2允许连接合并,因此将尝试为尽可能多的站点重用HTTP/2连接。
但是,您的设置应该运行良好。我认为问题可能是Apache2.2设置中的HTTP头错误。HTTP/2对此要求更严格,而HTTP/1则尽量在标题不好的情况下继续进行,因此不正确关闭的糟糕的多行标头,或者带有名称或双冒号空格的头,都会引起问题。但奇怪的是,它只是iOS。你没有在Chrome?Chrome有一个很好的方法来调试这些上看到这一点,但如果仅仅在iOS上,这可能会更加困难。除非您要将特定的坏头发送回iOS专用客户端?
噢,顺便说一下,升级Apache2.2。它的生命已经结束了一年多了,现在已经不再修补了!帮你自己一个忙,升级到2.4。如果在Windows上安装它应该相当容易,尽管是一些配置选项已被更改。。如果您找不到其他方法来解决这个问题,那么始终可以为它分配一个单独的IP地址,并直接承载它,而不是通过IIS托管它,尽管为此,您当然不应该使用旧的、不受支持的软件。
https://stackoverflow.com/questions/51453207
复制相似问题