使用自定义 OpenSSL 库编译 nginx

[ 2017-09-26 11:17:06 | 作者: admin ]
字号: | |
p.s. 升级nginx1.10.1到1.12.1,重新编译升级openssl来让nginx支持ssl

参考:
https://www.sinosky.org/compile-nginx-with-a-custom-openssl-library.html
openssl升级及nginx重新编译 http://blog.csdn.net/jhonney/article/details/73770339


编译安装 nginx 时,默认使用系统自带的 OpenSSL 库,但其一般很老,不支持如 SDPY 等新功能。--with-openssl 参数虽然可以指定 OpenSSL 路径,但只支持 OpenSSL 的源代码,不支持已编译好的 OpenSSL。每回更新 nginx 都要重新编译 OpenSSL 肯定很麻烦,网上找到一个方案,觉得很好,记录下来。


错误提示:
/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 `/usr/local/src/nginx-1.9.9' make: *** [build] Error 2





解决办法:
打开 nginx源码目录/auto/lib/openssl/conf 大约第 31 行至 35 行,把:
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_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"

这样,我们就可以在编译安装 nginx 时,手动指定已编译好的 OpenSSL 了,比如 --with-openssl=/usr/local/openssl。



nginx重新编译
/usr/local/nginx/sbin/nginx -V

cd /opt/nginx-1.8.1

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-openssl=/usr/local/openssl

make #千万别make install,否则就覆盖安装了

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

ps -ef |grep nginx #查看master进程号XX

kill -QUIT XXX

cp /opt/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/nginx

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx





CentOS系统下的OpenSSL版本升级操作记录
https://www.cnblogs.com/kevingrace/p/8058535.html
[最后修改由 admin, 于 2022-05-27 16:51:59]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2452

这篇日志没有评论。

此日志不可发表评论。