nginx上http2
发布于 10 个月前 作者 qjzd 652 次浏览 最后一次编辑是 3 个月前 来自 码农

下载

http://nginx.org/download/nginx-1.13.8.tar.gz
tar -xzvf nginx-1.13.8.tar.gz
wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz
tar -xzvf openssl-1.1.0g.tar.gz 

编译源码

./configure --with-http_ssl_module --with-http_v2_module --with-openssl=/home/nianqin/nginx/openssl-1.1.0g --prefix="/home/nianqin/nginx/nginx-1.13.8/build"
make
make install

配置支持

因为

 server {
        listen       443 ssl http2;
        server_name  qjzd.net;
    }

在listen的端口后面添加ssl http2

为什么编译的时候需要添加–with-openssl=

因为nginx需要支持http2模块需要依赖openssl1.0.2g或以上,但是某些系统比如Ubuntu14.04的系统自带的openssl会低于这个版本。所需要自行下载openssl与nginx一起编译。 否则编译出来的nginx谷歌等浏览器无法使用http2协议。

低版本的nginx与openssl联合make编译失败

比如nginx1.9.6版本 报错信息大致如下 src/event/ngx_event_openssl.c: In function ‘ngx_ssl_init’: src/event/ngx_event_openssl.c:112:5: error: ‘OPENSSL_config’ is deprecated (declared at /home/nianqin/nginx/openssl-1.1.0g/.openssl/include/openssl/conf.h:92) [-Werror=deprecated-declarations] … make[1]: [objs/src/event/ngx_event_openssl.o] Error 1 解决方案:请升级nginx版本

如何确认上http2成功

使用Chrome访问启用http2的站点,新开TAB页,在地址栏中输入chrome://net-internals/#http2,检查HTTP/2 sessions下的表格。 或者打开控制台,勾选disable cache(防止之前使用http1.1的缓存的请求), image.png

补充

查看openssl版本

openssl version

如果ubuntu的默认版本低于1.0.2g。可以尝试执行升级openssl

sudo apt-get update
sudo apt-get upgrade

参考连接

http://nginx.org/en/download.html https://www.openssl.org/source/ https://www.nginx.com/blog/supporting-http2-google-chrome-users/ http://www.jackieathome.net/archives/437.html

回到顶部