1、简介
Linux下升级openssl到新版本(如CentOS 7中openssl升级到openssl 1.1.1d)后,其实原nginx并没有真正调用新的openssl 1.1.1d。怎么办呢?需对nginx重新编译,但在编译安装过程中有人就无法编译nginx了,遇到如下问题:
2、nginx 编译openssl 失败
[root@m8hdkzbq06dr6o9a ~]# ./configure --prefix=/usr/local/nginx --user=root --group=root --with-openssl=/usr/local/openssl --with-http_stub_status_module --with-http_ssl_module --with-stream
/bin/sh: line 2: ./config: No such file or directory
make[1]: *** [/usr/local/openssl/include/openssl/ssl.h] Error 127
make[1]: Leaving directory `/usr/local/src/nginx-1.9.9'
make: *** [build] Error 2
需要说明的是,我这里编译所使用的Nginx源码是1.9.9的。根据报错信息我们知道,出错是因为Nginx在编译时并不能在/usr/local/openssl/ 这个目录找到对应的文件,其实我们打开/usr/local/这个目录可以发现这个目录下是没有.openssl目录的,因此我们修改Nginx编译时对openssl的路径选择就可以解决这个问题了。
3、解决方案
打开nginx源文件下的/usr/local/nginx-1.9.9/auto/lib/openssl/conf文件:
[root@m8hdkzbq06dr6o9a ~]# vim usr/local/nginx-1.9.9/auto/lib/openssl/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_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"
#然后再进行Nginx的编译安装即可
欢迎大家扫码关注:

本公众号只写原创,不接广告、不接广告、不接广告。下期小伙伴想学习什么技术,可以私信发我吆。

文章转载自IT运维大爆炸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




