HTTP/2 标准大概是在去年(2015)五月放出来的,在年底,主流的浏览器都已经添加了对 HTTP/2 的支持。HTTP/2 有很多优点,详细的请自己自行 Google。我在这次搬迁中顺便也就添加了对 HTTP/2 的支持。下面以是我在 Ubuntu 14.04 下为 Nginx 添加 HTTP/2 支持的过程。
升级 Nginx
首先,确保安装的 Nginx 版本在 1.9.5 或更新。在终端中输入:
nginx -v
若版本低于 1.9.5,输入以下命令进行更新。
sudo -s
nginx=development #用于获取最新的开发版本
add-apt-repository ppa:nginx/$nginx
apt-get update
apt-get install nginx
如过报类似add-apt-repoditory not existing的错误,可能需要安装python-software-properties。可尝试以下命令。
sudo -s
nginx=development #用于获取最新的开发版本
echo "deb http://ppa.launchpad.net/nginx/$nginx/ubuntu lucid main" > /etc/apt/sources.list.d/nginx-$nginx-lucid.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
apt-get update
apt-get install nginx
启用 HTTP/2
其实启用 HTTP/2 非常的简单。只要打开你的 Nginx 配置文件,在 server 中 listen的后面加上 http2 就可以了。这时配置文件看上去大概是这样的:
server{
listen 443 ssl http2;
...
如果你的配置文件中有以下语句:
ssl_prefer_server_ciphers on;
建议添加下面的语句,否可能因为你的 SSL 证书问题而被浏览器认为是不安全的连接,拒绝连接:
ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED';
相反,如果没有设置ssl_prefer_server_ciphers或者设置为off请无视。但是,我建议设置ssl_prefer_server_ciphers on,否则 Chrome 会显示
This webpage is not available
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY
然后,只要保存配置文件,并重载配置文件就可以了。
sudo nginx -s reload
检测是否启用了 HTTP/2
在 Chrome 中打开开发者工具(Windows 下可以按 F12 打开),切换到 Network 标签,在标题上右键点击,勾上 Protocol,刷新一下网页,显示为 h2 就表示已经使用了 HTTP/2。