关注最新技术
技术原创博客

编译Nginx的http2,并解决http2中的错误问题

Overview

今天闲着没事,升级了一下nginx 并编译安装了 http2 模块。现在博客已经支持了 http2.0 , 请访问 https://www.widuu.com 来体验。

必要的准备

  1. 你需要有一个 https 证书。
  2. 需要安装 OpenSSl
  3. nginx 的版本最大于等于 1.9.5 。

安装

1.下载并编译 nginx

wget http://nginx.org/download/nginx-1.9.12.tar.gz
tar zxf nginx-1.9.12.tar.gz
cd nginx*

2.使用 patch 命令打补丁

yum install patch
wget http://nginx.org/patches/http2/patch.http2.txt
patch -p1 < patch.http2.txt

3.编译

/path/sbin/nginx -V #查看编译参数
./configure --with-http_ssl_module \
  --with-http_v2_module \
  ...           #这里是你自己的编译参数

make

4.修改配置支持 http2

server {
    listen 443 default_server ssl http2;

    ssl_certificate      server.crt;
    ssl_certificate_key  server.key;

    ...
}

5.升级 nginx

mv /path/sbin/nginx /path/sbin/nginx.old
cp objs/nginx /path/sbin/nginx
/path/sbin/nginx -t
make upgrade

6.测试 http2 的时候 chrome 中出现 RR_SPDY_INADEQUATE_TRANSPORT_SECURITY 的错误代码

原因是 HTTP/2 协议中对 TLS 有了更严格的限制,HTTP/2 中只能使用 TLSv1.2+,并且禁用了很多 CipherSuite,所以我们参考 cloudflare 来配置如下:

ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers                 EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers   on;

这里重启测试,看看是不是可以了。OK就到这里,有问题发送邮件到 service#widuu.com

未经允许,不得转载本站任何文章:微度网络 » 编译Nginx的http2,并解决http2中的错误问题

分享到:更多 ()