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

作者:袖梨 2022-06-30

必要的准备

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

1.下载并编译 nginx

wget http://n*gin*x*.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*.or*g*/patches/http2/patch.http2.txt
patch -p1 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。

相关文章

精彩推荐