前言
很长一段时间都在用
Ubuntu
里直接用apt-get install
安装的Nginx
因此自己很多想折腾的东西如TLSv1.3
就因为缺依赖、依赖过旧等原因被锁了
然而又不想自己从头编译Nginx
,要折腾的东西太多了。。。
今天终于搞明白怎么自定义Ubuntu
里的Nginx
的编译参数惹。。写篇文章记下来 0.0
准备OpenSSL 1.1.0
要换
1.1.0
当然要先有啦~
- 下载并解压最新的
OpenSSL
源码1
2
3
4
5
6
7个人习惯,扔别的地方也是可以的
cd /opt
到 https://www.openssl.org/source/ 可以找到最新版的下载地址
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
解压源码
tar -xf openssl-1.1.0f.tar.gz
cd openssl-1.1.0f - 安装
OpenSSL
,不要覆盖系统自带的OpenSSL
!!!(很重要!划重点!)1
2
3./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make
make install - 为依赖库建立连接,不然
1.1
的OpenSSL
会因为找不到库而没法使用1
2
3cd /usr/local/openssl/lib
ln -s $(pwd)/libssl.so.1.1 /usr/lib/libssl.so.1.1
ln -s $(pwd)/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1 - 测试安装结果
1
2
3
4openssl version
OpenSSL 1.0.2g 1 Mar 2016
/usr/local/openssl/bin/openssl version
OpenSSL 1.1.0f 25 May 2017
准备自定义Nginx
的安装包
更换最新版Nginx
的源
折腾这种东西嘛,当然要折腾最新的啦,在
1.13.5
都发布了的时候,Ubuntu
里装的Nginx
居然还是1.10.3
真是要多不爽就有多不爽,那么第一步当然是换个新的咯 0.0
这个源一般会紧跟官方最新的版本,可能更新也就比官方慢个四五天的样子 0.0
1 | apt-get update |
准备Nginx
编译环境和源代码
- 首先编辑
/etc/apt/source.list.d/
里包含nginx
的那个文件,取消第二行deb-src
的注释 - 准备
Nginx
编译环境1
2apt-get update
apt-get build-dep nginx - 下载
Nginx
源代码1
2
3
4
5cd /opt
mkdir nginx
cd nginx
apt source nginx
cd nginx-1.13.5 - 编辑
Nginx
安装规则,使用自定义的OpenSSL
添加下面的规则:1
vim debian/rules
添加后就像这样:1
--with-openssl=/opt/openssl-1.1.0f \
1
2
3
4
5# configure flags
common_configure_flags := \
--with-openssl=/opt/openssl-1.1.0f \
--with-cc-opt="$(debian_cflags)" \
--with-ld-opt="$(debian_ldflags)" \
编译并安装Nginx
- 编译(打包)
Nginx
1
2
3cd /opt/nginx/nginx-1.13.5
可能会持续十分钟左右,甚至更长,请耐心等待
dpkg-buildpackage -b - 安装
Nginx
1
2
3dpkg -i nginx-light_1.13.5-1chl1~zesty1_amd64.deb
apt-get install -f
apt-mark hold nginx-light
最后
1 | 执行下 nginx -V 来看看 OpenSSL 版本对不对咯 |
- 啊科技树终于解锁了真爽!以后会继续在这个基础上折腾一堆新玩意的!
参考内容
Build nginx (Mainline) with OpenSSL 1.1.0 on Ubuntu 16.04
How To Add ngx_pagespeed to Nginx on Ubuntu 14.04