因为安全原因,需要升级nginx

在编译nginx-1.22.0时,出现以下错误:

$ sudo make
make -f objs/Makefile
make[1]: Entering directory `/data/soft/nginx-1.22.0'
cd /usr/local/ssl \
&& if [ -f Makefile ]; then make clean; fi \
&& ./config --prefix=/usr/local/ssl/.openssl no-shared no-threads \
&& make \
&& make install_sw LIBDIR=lib
/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/data/soft/nginx-1.22.0'
make: *** [build] Error 2

很多时候,尤其是编译安装软件的时候,遇到类似的问题,我都脑阔疼。。。

但问题还是要解决的

这个问题是关于openssl的,因为还是因为之前漏洞问题,需要针对openssl进行升级,因此openssl升级到了OpenSSL 1.1.1n  15 Mar 2022

不知道是不是因为配置的原因,在configure的时候没有找到对应的openssl配置,因此手动进行指定--with-openssl=/usr/local/ssl

在接下来make的时候,出现了上面提到的错误

显然/usr/local/ssl/.openssl/include/openssl/ssl.h中/usr/local/ssl/目录下是没有.openssl目录的

在/data/soft/nginx-1.22.0/auto/lib/openssl/目录下(也就是编译的你敢信对应的openssl目录下),文件conf中记录了相关的配置,因此只需要修改conf文件中的以下内容

            CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"

中$OPENSSL/后的.openssl删除即可,修改之后的如下所示:

            CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"

然后重新make即可

或者重新./configure,然后make即可解决该问题。