基本库介绍
nginx
使用时需要pcre
、zlib
、openssl
的支持
pcre:(Perl Compatible Regular Expressions) 是一个用 C 语言编写的正则表达式库,用于进行文本匹配和搜索。
nginx
的http
模块使用pcre来解析正则表达式
zlib: 是一个数据压缩库,用于在应用程序中进行数据的压缩和解压缩。nginx
使用zlib
对http
包的内容进行gzip
openssl: 是一个加密与安全库,提供了许多加密算法、安全通信协议和工具,用于数据的加密、解密、签名、验证等安全操作。它经常被用于构建安全的网络通信、SSL/TLS 连接以及数字证书管理等。nginx
不仅支持http
协议,还支持https
另一文章中有各资源的官方网站nginx及依赖模块资源,供大家参考
基本编译安装
# pcre
yum install -y pcre pcre-devel
# zlib
yum install -y zlib zlib-devel
# openssl
yum install -y openssl openssl-devel
环境准备好后就可以进行nginx
的编译,./configure时会自动在系统环境中找到依赖库
以上是最基本的编译安装方式,如果对版本有要求的话,以上方法就不太友好
下载源码安装
在官网下载各资源的最新版本,在写这篇文章时的最新版本分别是nginx-1.26.2.tar.gz
、openssl-3.4.0.tar.gz
、pcre2-10.44.tar.gz
、zlib-1.3.1.tar.gz
可以将openssl
、pcre2
、zlib
解压后分别进行编译安装,然后再编译nginx
,但那样可能修改编译机器的环境,而且编译出来的nginx
进程会依赖.so
动态库,如果在不同机器上使用,因为依赖库版本不同可能会出现问题,建议采用静态链接的方式
tar -xvf openssl-3.4.0.tar.gz
tar -xvf pcre2-10.44.tar.gz
tar -xvf zlib-1.3.1.tar.gz
tar -xvf nginx-1.26.2.tar.gz
./configure --help可以查看可配置参数
./configure --prefix=/usr/local/nginx \
--with-http_realip_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-pcre=../pcre2-10.44 \
--with-zlib=../zlib-1.3.1 \
--with-openssl=../openssl-3.4.0
make && make install
后面跟的是源码的路径,可以是相对路径,也可以是绝对路径,能找到就行,找不到的话./configure会报错,根据报错内容修改即可
通过这种方式编译的
nginx
不再依赖这三者的动态库,是静态链接的方式,也就是说nginx
可以直接拿到其他机器上使用,不需要外部的动态链接库,可以用readelf -d nginx
查看,下面贴上我用两种不同方式编译出来的nginx
进程,可以看到少了这三个依赖库
其他问题
这里在编译openssl
的时候还有一个特殊问题,在这里记录一下
mips64
架构上编译openssl
时,执行./config
时有以下警告,如果不加参数,在make的时候出现“fatal error: sys/cdefs.h: 没有那个文件或目录”的错误
WARNING! To build 64-bit package, do this:
./Configure linux64-mips64
You have about five seconds to abort:
有这样的问题时,在nginx
的./configure
时需要加上参数--with-openssl-opt=linux64-mips64