快速让nginx支持HTTPS/2

HTTPS:在http协议基础之上包裹ssl协议的安全为目的的新一代协议,
HTTP2:超文本传输协议的第二代。

一、前期准备。

nginx从1.9.5版本开始提供 http_v2_module 模块用于提供 HTTP/2 服务。

想要nginx支持https/2需要自行编译,依赖pre、zlib和openssl,可安装于系统或在编译时指定依赖位置。同时,你需要准备ssl证书及密钥,购买或者申请免费的都可以。

注意:想要启用http/2,则要保证openssl大于1.0.2。原因如下:

Note that accepting HTTP/2 connections over TLS requires the “Application-Layer Protocol Negotiation” (ALPN) TLS extension support, which is available only since OpenSSL version 1.0.2. Using the “Next Protocol Negotiation” (NPN) TLS extension for this purpose (available since OpenSSL version 1.0.1) is not guaranteed.

二、编译安装nginx

先去官网下载nginx源码,解压并cd到目录下,然后执行编译配置。

./configure --prefix=/usr/local/nginx --with-openssl=../libressl-2.2.2 --with-http_v2_module --with-http_ssl_module

其中 prefix 是指定安装位置,http_v2_module 和 http_ssl_module 则分别是启用http2和https。

然后通过执行 make 和 make install 编译并安装。

现在 nginx 已经启用 https/2 并安装到你的系统了,下面就是配置 nginx 。

三、配置nginx

在 nginx 中启用站点 https 支持很简单如下配置即可。

server {
        listen 443 ssl;

        ssl_certificate ssl证书路径;
        ssl_certificate_key ssl密钥路径;

        server_name example.com;

        location / {
            # xxx
        }
}

而开启站点 http2支持则更简单

server {

    listen 443 ssl http2;

    ssl_certificate ssl证书路径;

    ssl_certificate_key ssl密钥路径;

    server_name example.com;

    location / {
        # xxx
    }
}

对,你没看错,就是在listen中添加 http2 即可。

至此,你的站点已经支持https/2了。