header image

Nginx启用HTTP/2

本着更快、更快、更快精神搞出来的HTTP/2,不用还是人?下面就来说一下吧。

准备工作

首先你需要Nginx 1.9.5以上版本。如果是Ubuntu Server 16.04 LTS的话,自带的是1.10的版本所以没有问题。其他系统请自行解决。

其次你需要启用ngx_http_v2_module模块。如果是Ubuntu Server 16.04 LTS的话就需要安装nginx-corenginx-fullnginx-extras,反正nginx-light是没有的。如果是自行编译需要在设置时加上--with-http_v2_module选项。

再次需要配合OpenSSL 1.0.2以上版本使用,如果是Ubuntu Server 16.04 LTS的话,自带的是1.0.2g的版本所以没有问题。其他系统请自行解决。

最后,你需要在Nginx上启用HTTPS,这涉及到SSL证书的申请、配置,又是一篇文章的内容了,以后有机会再说,这里请自行解决吧。

配置

禁用旧版加密

如果不禁用的话,会造成虽然启用了但是没法正常访问的问题。

Ubuntu上,只要修改/etc/nginx/nginx.conf文件,在http一节里找到或新加入这样一行(如果是软件包自带的配置文件的话,可以加在ssl_prefer_server_ciphers一行后面):

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

配置HTTP/2

之后我们只要修改站点的配置文件,在listen监听的HTTPS端口443后面加上ssl http2就行了。监听80端口的并不能启用HTTP/2,请放弃。

比如:

server {
    listen 443 default_server ssl http2;
    listen [::]:443 default_server ssl http2;

    server_name example.com;

    ssl on;
    ssl_certificate /path/to/example.com.crt;
    ssl_certificate_key /path/to/example.com.key;

    root /var/www;

    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;             
    }
}

重启Nginx

Ubuntu只要如下命令就行了:

sudo systemctl restart nginx

最后

如果使用Firefox,可以安装一个叫做HTTP/2 and SPDY indicator的扩展,安装之后会在地址栏右侧显示一个闪电样的小图标,如果网站是HTTP/2就会显示蓝色,如果是SPDY(HTTP/2的前身)就会显示绿色,如果没有则显示灰色。

也可以打开开发者工具里的网络,可以看到“版本”一项显示“HTTP/2.0”。

HTTP/2好处都有啥,可以参考维基百科HTTP/2条目英文的更详细)。

赞赏

微信赞赏支付宝赞赏

1 comment

reply

your email will keep secret. (* required).

you can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> .