”不问世间苦难愁苦之事,只求觉己释心道明之理”。 ​​​​

前言
  日常洗眼看妹子

情不知何起
情不知何起

我的机子是ubuntu16.04,虽然说默认安装的openssl是1.0.2f.可是用apt安装的版本使用的openssl就是1.0.1f的,气死我了,所以我选择了编译安装

先看看nginx版本

1
$ nginx -V //注意V大写的

如果这行
nginx version: nginx/1.13.3
nginx版本不能低于1.9.0,不然无法支持HTTP/2.找个官方长期支持版本就好了
built with OpenSSL 1.1.0f 25 May 2017
openssl版本最好在1.0.2或者以上的.直接可以nginx配置下开启HTTP/2,不用瞎折腾,具体配置下面一起讲

编译安装openssl
openssl官网下载地址

1、下载你需要的OpenSSL版本,我这儿的版本是 1.0.2j,我自己线上1.1.0f,怕太高碰到坑,还是稳定版用用好了

1
2
3
4
5
$ sudo wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
error_log logs/error.log error;
//日志 日志地址 变量(也不知道该怎么描述,反正我是这么认为)
//确保 logs文件夹存在哦

2、解压下载的OpenSSL压缩包

1
$ sudo tar -xzvf openssl-1.0.2l.tar.gz

3、开始编辑OpenSSL

1
2
3
4
5
$ cd openssl-1.0.2l
$ sudo ./config
$ sudo make install

4、建立软链
和所谓软连接,就相当于快捷方式吧,差不多可以这么理解

1
sudo ln -sf /usr/local/ssl/bin/openssl openssl

5、版本验证

1
$ openssl version -v

如果版本是上面安装的1.0.2l,更新也会变化,这样子就对了,不然,嗯,洗洗睡吧…

编译nginx
1、下载nginx tar包
nginx官方下载地址

1
2
3
$ sudo wget http://nginx.org/download/nginx-1.12.1.tar.gz
$ sudo tar -zxvf nginx-1.12.1.tar.gz
$ cd nginx-1.12.1

这儿就用官方长期维护版本好了,不然如果想用nginx amplify 就比较麻烦了.这儿插个嘴,nginx amplify是一个nginx官方搞得监控你服务器上nginx性能之类的可视化平台,有兴趣可以搞一搞

2、开始./configure

1
$ sudo ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-openssl=./openssl-1.0.2j --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module

可能你的openssl这儿报错啥的,自己随机应变

3、开始编译Nginx

1
2
$ sudo make
$ sudo make install

4、开启nginx

1
$ sudo nginx

5、验证Nginx

1
$ nginx -V

看看你 built with OpenSSL 1.0.2j 26 Sep 2016这行是不是1.0.2j,是的话就ok了,可以美滋滋的上去配置了,不是的话可以看下./configure 配置这儿的地址填自己的

6、nginx配置
少年,是不是以为这样子就完成了…呵呵呵太天真了,还需在nginx.conf里配置一下

1
2
listen 443 ssl http2 fastopen=3 reuseport;
//在listen里加入http2即可,简单随意

然后重启下nginx,同时测试下配置有没有错误

1
$ nginx- q&&nginx -t&&nginx -s reload

7.查看是否成功打开

可以在chrome F12里的network中查看protocol是否是h2,是的话即开启成功

注:protocol需要自己打开,默认没有显示

当然也可以通过这个网站qualys来测试,他的比较全面,我就不一一介绍了

人生如雾亦如梦,情似甘露转头空,不若轻舟五湖去,一壶清酒一杆风,至此不问世间 ​​​​