如何知道我的网站是通过HTTP还是HTTP/2提供服务?

问题描述:

是否有命令或服务会告诉我我的网站是通过HTTP还是HTTP/2提供服务?如何知道我的网站是通过HTTP还是HTTP/2提供服务?

我发现这个工具:HTTP/2 Test | A simple HTTP/2.0 test tool,但它只告诉我我的网站是否支持HTTP/2,而不是它是否已经使用HTTP/2。

这些也是这个Chrome扩展:HTTP/2 and SPDY indicator,它告诉我HTTP/2已经在我的网站上启用了,但据我所知我的Apache版本甚至不支持它。

有什么方法可以肯定地知道吗?谢谢!

+0

'mod_http2'是在Apache中的2.4.17版及更高版本可用。你必须使用最新的OpenSSL 1.0.2(更好的是最新的OpenSSL 1.0.2h和很快的1.1.0)。你会在这里获得更多细节(https://icing.github.io/mod_h2/howto.html)。为什么你看到一个问题,更新您的Web服务器到最新的2.4.20版本?你期望你的软件有一些兼容性问题吗?您可以使用IE开发人员工具或Chrome开发人员工具(只需使“协议”列可见),清除缓存(重要!!!)并在网络跟踪中查看HTTP2或h2。您可以先在cdnjs.com上测试相同的 – Oleg

+0

谢谢,@Oleg。我研究过'mod_http2',我想安装它,但是我运行CentOS,它的最新预打包版本是2.4.6(就像你说的,它不支持'mod_http2')。我认为升级到2.4.17的唯一方法是从头开始编译Apache,但我不确定我是否想要这样做。我可能只需等到CentOS推出更新。 – Vadim

+0

欢迎您!我不使用CentOS,但似乎应该真正编译源代码:参见[这里](https://httpd.apache.org/docs/2.4/platform/rpm.html)。可能很容易。我没有经验。无论如何,HTTP/2将以约30%的速度加快您的网站。此外,您将能够在不合并的情况下使用JavaScript模块,因为在HTTP/2下很快加载很多小文件。你可以配置web服务器来加载最小的文件(jQuery等)和1年的长缓存。用户通常只会加载这些文件一次。我的意思是HTTP/2真的很重要,我建议你 – Oleg

Apache不必支持它。 Chrome扩展程序会读取HTTP标头以确定。

另一种方法是在Chrome或Firefox中查看网络选项卡>标题>响应标题>查看源代码。有标题可以看到。它应该读取“HTTP/2”或某种我现在不记得的内容。

最简单:您可以使用curl -I <your site>这将把HTTP响应作为第一行。

HTTP/2.0 200 
server:nginx 
date:Fri, 29 Apr 2016 14:31:40 GMT 
content-type:text/html; charset=utf-8 
content-length:7629 
last-modified:Thu, 07 Apr 2016 02:41:08 GMT 
.... 
+0

谢谢,@Rob! 'curl'选项效果非常好! – Vadim

对于使用Nginx的人,你可以查看它通常位于/var/log/nginx/access.log访问日志,寻找线,如

167.220.232.9 - - [12/Feb/2018:15:09:04 +0800] "GET/HTTP/2.0" 200 2546 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"