问题描述
我按照 数字海洋论文,现在可以使用 http2.
I setup my Nginx conf as per Digital Ocean paper,and now http2 is available.
但在 Chrome(版本 54.0.2840.98(64 位))开发工具中,它总是在 HTTP 1/1 上:
But in Chrome (Version 54.0.2840.98 (64-bit)) Dev tool, it's always on HTTP 1/1:
NAME METHOD STATUS PROTOCOL
shell.js?v=xx.. GET 200 http/1/1
我的服务器运行的是 Ubuntu 16.04 LTS,它支持 ALPN 和NPN,随附的 openssl 版本是 1.0.2g.
My server is running Ubuntu 16.04 LTS which supports both ALPN & NPN, and the openssl version shipped with it is 1.0.2g.
我使用 这个工具站点检查了 http2 支持,结果是:
I checked http2 support with this tool site and the result is:
Yeah! example.com supports HTTP/2.0. ALPN supported...
也检查 curl 是可以的:
Also checking with curl is OK:
$ curl -I --http2 https://www.example.com
HTTP/2 200
server: nginx/1.10.0 (Ubuntu)
date: Tue, 13 Dec 2016 15:59:13 GMT
content-type: text/html; charset=utf-8
content-length: 5603
x-powered-by: Express
cache-control: public, max-age=0
etag: W/"15e3-EUyjnNnyevoQO+tRlVVZxg"
vary: Accept-Encoding
strict-transport-security: max-age=63072000; includeSubdomains
x-frame-options: DENY
x-content-type-options: nosniff
我还从控制台检查了 is-http2 cli:
I also checked with is-http2 cli from my console:
is-http2 www.amazon.com
× HTTP/2 not supported by www.amazon.com
Supported protocols: http/1.1
is-http2 www.example.com
✓ HTTP/2 supported by www.example.com
Supported protocols: h2 http/1.1
为什么 Chrome 无法识别?
Why doesn't Chrome recognise it?
如何使用 Safari (v 10.0.1) 进行检查?
How can I check it also with Safari (v 10.0.1)?
推荐答案
可能是以下两个原因之一:
Will likely be one of two reasons:
您正在使用防病毒软件,并且您的流量是中间人,因此将您降级到 HTTP/1.1.关闭 AV 上的 https 流量监控以直接连接到服务器.您可以使用在线工具测试您的网站是否支持 HTTP/2.
您使用的是较旧的 TLS 密码,特别是 Chrome 不允许用于 HTTP/2 的密码 (https://http2.github.io/http2-spec/#BadCipherSuites) 按照上述指南的第 5 步.使用 https://www.ssllabs.com/ssltest/ 扫描您的站点以检查您的 TLS 配置和改进它.
You are using older TLS ciphers and specifically one that Chrome disallows for HTTP/2 (https://http2.github.io/http2-spec/#BadCipherSuites) as per Step 5 of above guide. Scan your site using https://www.ssllabs.com/ssltest/ to check your TLS config and improve it.
第三个原因是您的 SSL/TLS 中缺乏 ALPN 支持库(例如,您使用的是 openssl 1.0.1 并且需要是 1.0.2 或更高版本),但您已经确认您有 ALPN 支持,因此在此答案中跳过此部分.
The third reason is lack of ALPN support in your SSL/TLS library (i.e. You are using openssl 1.0.1 and need to be one 1.0.2 or later, for example) but you have already confirmed you have ALPN support so skipping that for this answer.
这篇关于为什么 Chrome 浏览器不能识别我的 http2 服务器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!