简介
以二进制文件形式(或者apt)安装的Nginx能满足大部分的场景需求,但这样也造成可能安装了你不需要的模块或者又没有安装你需要的模块,那么可以通过从Nginx源码编译安装的方式,实现根据自己的需求来选择所要安装的Nginx模块。
Nginx官网有从源码安装的文档,只要你照着它的文档一步步的去做,那就肯定。。。会报错。🙉
那怎样才能完成编译安装呢,阅读完这篇文章你就懂了!👍
系统环境
本文以Ubuntu系统为例说明,其他的Linux发行版也能够参照操作。
安装依赖
- 检查系统中是否有gcc编译工具
sh
gcc --version
- 如果没有的话,先安装gcc
sh
sudo apt update
sudo apt install build-essential
- 安装PCRE
sh
wget github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz
tar -zxf pcre2-10.42.tar.gz
cd pcre2-10.42
./configure
make
sudo make install
- 安装zlib
sh
wget https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz
tar -zxf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make
sudo make install
官网文档上zlib的下载链接是无效的,因为zlib在上个月(2024年1月)发布了新版,旧版链接被移除,但Nginx的文档没有更新。为了不引起可能的版本问题,这里我用zlib在GitHub上的旧版链接进行下载。
- 安装OpenSSL
sh
wget http://www.openssl.org/source/openssl-1.1.1v.tar.gz
tar -zxf openssl-1.1.1v.tar.gz
cd openssl-1.1.1v
./config --prefix=/usr
make
sudo make install
在官网安装文档中,这里突然给了个Mac下的编译配置命令,也没有给任何注释,所以要修改为上面的命令才能安装。(注意:config是全小写的,而不是官网文档中的大写Configure)
下载源码
sh
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0
你也可以从官网页面上下载源码,打开这个下载页面:

然后在Stable version
下点击当前最新的稳定版nginx-1.24.0
链接,不要去下面Source Code
那栏中找,那地方找到的源码与这个源码的目录结构不同,所以安装方法也不同。
编译安装
- 安装配置
在这里就可以进行模块选择了。比如,我只要http、ssl以及tcp四层转发,那么用下面的命令进行安装配置:
sh
./configure \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--with-pcre=../pcre2-10.42 \
--with-zlib=../zlib-1.2.13 \
--with-openssl=../openssl-1.1.1v \
--with-stream \
--with-stream_ssl_preread_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module
具体有哪些模块,可以打开这个链接查看,根据自己的需求选择安装。
- 编译源码
sh
make
sudo make install
- 列出安装的模块
sh
sudo /usr/local/nginx/nginx -V
- 启动Nginx
sh
sudo /usr/local/nginx/nginx
- 停止Nginx
sh
sudo /usr/local/nginx/nginx -s quit
OK,到这里就完成了Nginx的编译安装!👏
报错排除
- 编译报错:configure: error: no acceptable C compiler found in $PATH
缺少gcc编译环境,安装gcc编译工具:
sh
sudo apt update
sudo apt install build-essential
- 下载zlib报错:ERROR 404: Not Found
zlib 1.2.13的下载地址为:github.com/madler/zlib...
- 安装OpenSSL报错:cc: error: unrecognized command-line option '-arch'
安装时的配置参数不正确,在Linux中的命令是:./config --prefix=/usr
- OpenSSL报错:error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
这是可能在编译安装完OpenSSL后,调用OpenSSL相关方法时报的错,解决方法:
sh
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
sudo ldconfig