无法编译具有SSL支持的Nginx,未找到OpenSSL


19

我正在尝试从启用SSL模块的源代码编译nginx。当我运行此命令时:

./configure --with-http_ssl_module

它会执行通常的检查,以检查所有内容是否正确安装,然后弹出:

正在检查OpenSSL库...未找到

./configure:错误:SSL模块需要OpenSSL库。您可以不启用模块,也不能将OpenSSL库安装到系统中,或者使用--with-openssl =选项从源代码使用nginx静态构建OpenSSL库。

我知道是安装OpenSSL的事实,因为当我做openssl version我得到OpenSSL 1.0.1 14 Mar 2012

所以我很沮丧。我以为OpenSSL可能不在其默认位置,这就是为什么nginx找不到它的原因,但是我不知道这是在服务器的预装位置。我怎么知道这是哪里?

服务器正在运行Ubuntu 12.04 LTS。

谢谢。


2
对于使用yum的用户(CentOS | redhat | fedora),请尝试安装openssl-devel,然后尝试运行命令。
maverick3

Answers:


29

您很可能会丢失libssl-dev包裹。

但是,为什么不为自己省去所有麻烦,而仅对Nginx使用PPA


PPA到底是什么?我可以从中收集人们可以上传要使用的软件包apt-get吗?我认为确保始终获得最新版本软件的最佳方法是从网站的源代码进行编译。
詹姆士·林顿

1
PPA是个人包装档案。如您所说,他们将分发dpkg软件包。从源代码进行编译可能会为您提供最新版本,但这并不总是必要的。可在以下位置找到有关Ubuntu和PPA的信息:wiki.nginx.org/Install#Official_Debian.2FUbuntu_packages
Christopher Perrin,

Nginx Wiki上的信息很好。最终它将带您进入我链接的PPA。:)
迈克尔·汉普顿

好的,谢谢,我将来会考虑使用PPA。但是对于这个问题,安装libssl-dev有效。:)
詹姆斯·林顿

Nginx PPA是前进之路,因为它通过apt提供了最新的官方Nginx二进制文件。Ubuntu通常会提供Nginx版本以支持一些版本,但是使用Nginx PPA可以从Nginx.org获得最新版本。与从源代码进行编译相比,使用此方法要容易得多,并且非常适合自动配置脚本。它使您的apt在系统上随时了解当前安装的Nginx版本,从而使基于apt的更新更加容易。除非有特殊原因需要从源代码进行编译,否则PPA方法在生产中维护起来非常容易。
乔J

1

我使用以下代码为nginx获取openssl:

https://ethitter.com/2016/06/nginx-openssl-1-0-2-http-2-alpn/

所有其他尝试要么无效,要么笨拙。

希望这可以帮助另一个...


帮助我弄清楚该--with-openssl=标志是指向文件。如果要链接到nginx ./configure找不到的已编译/系统OpenSSL,请参阅此论坛帖子--with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV)。
vesperto

感谢您提供额外的参考@vesperto
skidadon

0

如果要检查libssl是否安装在正确的位置,可以键入which openssl,然后ldd /path/to/openssl


0

即使已经安装了OpenSSL(brew install openssl),配置本身也会建议一种解决方法,该方法对我有用:

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master--with-openssl=~/GitHub/openssl/openssl


该选项是否--with-openssl=指向克隆的openssl github存储库?您可能会考虑编辑答案以反映此问题,因为这可能会使人们在没有足够了解的情况下感到困惑。
Jamie Lindsey

是的,/ GitHub / openssl / openssl是github.com/openssl/openssl.git
Pnemonic

0

如果仍然有人遇到从pcre相关的错误中编译nginx的问题,请使用“ --with-pcre”属性进行编译。为了提供pcre路径,请不要提供安装路径。提供pcre软件路径。

  1. 用以下命令安装pcre

。/配置

使

须藤使安装

然后,提供pcre源路径的路径。

./configure --prefix=/path/to/nginxToBeInstalled/mayBeInOpt/nginx-1.16.0/ --with-openssl=/path/to/installed/openssl-1.1.1b/ --with-pcre=/path/to/your/downloaded/extracted/pcre-8.42

就我而言

./configure --prefix=/opt/nginx-1.16.0/ --with-openssl=/opt/openssl-1.1.1b/ --with-pcre=/media/username/personal/Software/pcre-8.42

谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.