我正在尝试使用 certbot 设置我的 https,所以我需要重新编译 ngx 添加 '--with-http_ssl_module',这是完整的步骤:
- sudo make clean
- sudo ./auto/configure --prefix=/var/www/html --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --with-pcre --with-http_ssl_module --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --modules-path=/etc/nginx/modules
- check Makefile , I can see 'http_ssl_module' added in objs/Makefile
- sudo make
- sudo make install
完成上述所有步骤后(没有观察到错误) 我检查了 'ngx_modules.o'(仍然缺少 ssl 模块) 并运行下面的命令
sudo certbot --nginx -d feedme.pub
Saving debug log to /var/log/letsencrypt/letsencrypt.log
The nginx plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('Nginx build is missing SSL module (--with-http_ssl_module).')
另外,我检查了我的 ssl lib-libssl 是否已安装:
ldconfig -p | grep libssl
libssl3.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl3.so
libssl.so.1.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.1
libssl.so.1.0.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
libssl.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libssl.so
任何人都可以帮助回答为什么我无法在中构建'--with-http_ssl_module'?
解决方案如下:
--with-openssl=/usr/include/openssl'
选项,因为'--with-http_ssl_module'需要使用opensslmake -f objs/Makefile make[1]: Entering directory `/root/soft/nginx-1.17.3' cd /usr/local/openssl \ && if [ -f Makefile ]; then make clean; fi \ && ./config --prefix=/usr/local/openssl/.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/openssl/.openssl/include/openssl/ssl.h] Error 127 make[1]: Leaving directory `
我所做的是手动修改
./auto/lib/openssl/conf
将下面的路径更改为我的ubuntu上的实际位置
CORE_INCS="$CORE_INCS <your openssl lib's path>/include"
CORE_DEPS="$CORE_DEPS <your openssl lib's path>/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS <your local libssl.a path>/lib/libssl.a"
CORE_LIBS="$CORE_LIBS <your local libcrypto.a path>/lib/libcrypto.a"
然后运行 make ,一切正常
现有的答案违背了
--with-openssl
的意图,它应该与openssl源代码树一起使用,并且它假设存在静态库libssl.a
和libcrypto.a
,这不能保证在每个发行版上.
正确的方法是解压 openssl 源 tarball 并再次编译它。