Back

Nginx & HTTP/2

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。

Licenced under CC BY-NC-SA 4.0