我遇到了一个难题,AWS上ELB后面的EC2实例上托管的网站无法加载到任何移动I-设备上。该网站在桌面上的所有浏览器上都加载良好。
我的EC2正在用Apache运行Centos。
没有错误消息,Safari只显示了一个空白页面,地址栏就会清除。Chrome显示消息"ERR_FAILED"。
我在这个问题上挣扎了好几天,在网上找不到太多,所以我想分享我的解决方案。
我发现运行
curl "https://example.com"
返回
HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
经过更多的研究,我发现
应用程序负载均衡器通过HTTPS侦听器。您最多可以使用一个并行发送128个请求HTTP/2连接。负载平衡器将这些转换为单个HTTP/1.1请求并将它们分发到目标群体。因为HTTP/2更多地使用前端连接有效地,您可能会注意到客户端和负载平衡器。您不能使用HTTP/2的服务器推送功能。[来源]
解决方案:编辑http.conf以禁用http/2
更改
Protocols h2 h2c http/1.1
至
Protocols http/1.1