Рабочая "конфетка устанавливает openssl-devel", кажется партией, легче, чем переключение на человечность.
Имел ту же проблему как OP. У меня был установленный openssl, но nginx мог найти его, когда compil, но указатель на libssl-devel помог мне
Я не могу вполне вспомнить точно, чем проблема была здесь, но я предполагаю что символьная ссылка на/usr/local/ssl (или openssl?) к тому, везде, где openssl на самом деле находится, решил бы проблему. У меня не было проблем при установке nginx с поддержкой SSL в Ubuntu 10.04 с OpenSSL по умолчанию. Таким образом, я рекомендовал бы любому изо всех сил пытающемуся с этим испытать это.
Кроме того, Вам, вероятно, нужны корректные dev установленные пакеты. Вот что я обычно устанавливающий до установки nginx..
2 apt-get update
3 apt-get install gcc
4 apt-get install g++
5 wget http://www.python.org/ftp/python/2.7/Python-2.7.tgz
6 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
7 wget http://zlib.net/zlib-1.2.5.tar.gz
8 ls
9 gzip -d pcre-8.12.tar.gz
10 gzip -d zlib-1.2.5.tar.gz
11 gzip -d Python-2.7.tgz
12 tar -xvf zlib-1.2.5.tar
13 cd zlib-1.2.5
14 ./configure
15 make
16 ls
17 Makefile
18 ls
19 ./configure
20 make
21 sudo apt-get install build-essential
22 make
23 make install
24 cd ..
25 ls
26 tar -xvf pcre-8.12.tar
27 cd pcre-8.12
28 ./configure --prefix=/usr --enable-unicode-properties
29 make
30 make install
31 cd ..
32 ls
33 tar -xvf Python-2.7.tar
34 apt-get install openssl
35 cd Python-2.7
36 apt-get install libssl-dev
37 apt-get install libperl-dev
38 ./configure --help
39 ./configure --enable-ipv6
40 make
41 make install
заголовками openssl обычно предоставляют libssl-dev
на Ubuntu. Существует также a --with-openssl=DIR
./configure
опция для nginx, который позволяет Вам вручную указать путь к openssl источникам. Какая-либо причина, почему Вы создаете его из источника вместо того, чтобы использовать Ваш диспетчер пакетов?
./configure --with-openssl=/usr/include/openssl/
– Nathan V
21.09.2015, 22:48
Это может также произойти когда Ваш nginx configure
относительные пути использования. Это находит библиотеки намного более надежно если полные пути от /
используются вместо этого.
Не работает: ./configure --with-openssl=../openssl-source
Работы: ./configure --with-openssl=/home/build/src/openssl-source
Для Zlib
распакуйте tar-файл zlib и затем настройте его
Путь - /opt/app/workload/nginx-test/nginx-1.8.0/zlib/zlib-1.2.8
./configure --prefix=/opt/app/workload/nginx-test/nginx-1.8.0/zlib/zlib-1.2.8
make
make install
Для PCRE
Untar файл PCRE, затем настройте его
Путь - /opt/app/workload/nginx-test/nginx-1.8.0/pcre/pcre-8.36
./configure --prefix=/opt/app/workload/nginx-test/nginx-1.8.0/pcre/pcre-8.36
make
make install
Просто распакуйте файл нет необходимости настраивать его, Nginx будет использовать его самостоятельно
для openssl
Путь - /opt/app/workload/nginx-test/nginx-1.8.0/openssl-1.0.1l
Для Nginx
./configure --prefix=/opt/app/workload/nginx-test/nginx-1.8.0/nginx --with-pcre=/opt/app/workload/nginx-test/nginx-1.8.0/pcre/pcre-8.36 --with-zlib=/opt/app/workload/nginx-test/nginx-1.8.0/zlib/zlib-1.2.8 --with-http_ssl_module --with-openssl=/opt/app/workload/nginx-test/nginx-1.8.0/openssl-1.0.1l
./configure —with-cc-opt="-I/usr/local/opt/openssl/include" --with-ld-opt="-L/usr/local/opt/openssl/lib"
--с -openssl=путь задает путь к библиотеке OpenSSL sources .
путь является исходным кодом openssl, а не make install
каталогом
mac:nginx-1.17.3 qidizi$ ls../openssl-OpenSSL_1_1_1c/.
./ ../ .cfg.sh .openssl/
pcre или zlib — одно и то же;
В моем случае проблема заключалась в том, что я пытался передать --prefix
и --openssldir
в nginx --with-openssl-opt
вариант:
RUN./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/run/nginx.pid \
--with-openssl=/usr/local/src/openssl-1.1.1c \
--with-openssl-opt="--prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers" \
--with-http_ssl_module \
--with-stream \
--with-mail=dynamic
Nginx ожидает, что встроенный openssl будет находиться в подпапке .openssl
исходной папки openssl, в моем случае /usr/local/src/openssl-1.1.1c/.openssl
. Но я передал ему prefix
и openssldir
, поэтому построенный openssl находился в системной папке /usr/local/ssl
.
So nginx не смог найти ни заголовков openssl при предварительной обработке (objs/Makefile
, искал их в /usr/local/src/openssl-1.1.1c/.openssl/include
), ни libssl.a
/libcrypto.a
позже при компоновке(objs/Makefile
ожидал их в/usr/local/src/openssl-1.1.1c/.openssl/lib
).
Я просто удалил опции prefix
и openssldir
, и сборка у меня заработала:
RUN./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/run/nginx.pid \
--with-openssl=/usr/local/src/openssl-1.1.1c \
--with-openssl-opt="shared zlib enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers" \
--with-http_ssl_module \
--with-stream \
--with-mail=dynamic