Linux入门教程:ubuntu16.04安装nginx-1.12.1开启http2,nginx/1.12.2
我的机子是ubuntu16.04,虽然说默认安装的openssl是1.0.2f.可是用apt安装的版本使用的openssl就是1.0.1f的,气死我了,所以我选择了编译安装
先看看nginx版本
$ 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官网下载地址 https://www.openssl.org/source/
1、下载你需要的OpenSSL版本
我这儿的版本是 1.0.2j,我自己线上1.1.0f,怕太高碰到坑,还是稳定版用用好了
$ sudo wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
error_log logs/error.log error;
//日志 日志地址 变量(也不知道该怎么描述,反正我是这么认为)
//确保 logs文件夹存在哦
2、解压下载的OpenSSL压缩包
$ sudo tar -xzvf openssl-1.0.2l.tar.gz
3、开始编辑OpenSSL
$ cd openssl-1.0.2l
$ sudo ./config
$ sudo make install
4、建立软链
和所谓软连接,就相当于快捷方式吧,差不多可以这么理解
sudo ln -sf /usr/local/ssl/bin/openssl openssl
5、版本验证
$ openssl version -v
如果版本是上面安装的1.0.2l,更新也会变化,这样子就对了,不然,嗯,洗洗睡吧…
编译nginx
1、下载nginx tar包
nginx官方下载地址 http://nginx.org/
$ 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
$ 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
$ sudo make
$ sudo make install
4、开启nginx
$ sudo nginx
5、验证Nginx
$ nginx -V
看看你 built with OpenSSL 1.0.2j 26 Sep 2016这行是不是1.0.2j,是的话就ok了,可以美滋滋的上去配置了,不是的话可以看下./configure 配置这儿的地址填自己的
6、nginx配置
少年,是不是以为这样子就完成了…呵呵呵太天真了,还需在nginx.conf里配置一下
listen 443 ssl http2 fastopen=3 reuseport;
//在listen里加入http2即可,简单随意
然后重启下nginx,同时测试下配置有没有错误
$ nginx- q&&nginx -t&&nginx -s reload
7.查看是否成功打开
可以在chrome F12里的network中查看protocol是否是h2,是的话即开启成功
注:protocol需要自己打开,默认没有显示
当然也可以通过这个网站qualys来测试,他的比较全面,我就不一一介绍了。