Impossibile compilare nginx con supporto SSL, OpenSSL non trovato


19

Sto cercando di compilare nginx dall'origine con il modulo SSL abilitato. Quando eseguo questo comando:

./configure --with-http_ssl_module

fa i suoi soliti controlli per vedere se tutto è installato correttamente, e quindi questo si apre:

verifica della libreria OpenSSL ... non trovata

./configure: errore: i moduli SSL richiedono la libreria OpenSSL. Non è possibile abilitare i moduli, né installare la libreria OpenSSL nel sistema, né compilare staticamente la libreria OpenSSL dall'origine con nginx usando l'opzione --with-openssl =.

So per certo che OpenSSL è installato, perché quando lo faccio openssl versionottengoOpenSSL 1.0.1 14 Mar 2012

Quindi sono piuttosto perplesso. Ho pensato che forse OpenSSL non è installato nella sua posizione predefinita, motivo per cui nginx non riesce a trovarlo, ma non ho idea di dove sia preinstallato sul server. Come posso sapere dove si trova?

Il server esegue Ubuntu 12.04 LTS.

Grazie.


2
Per le persone che usano yum (CentOS | redhat | fedora) prova a installare openssl-devel e quindi prova a eseguire il comando.
— Maverick3,

Risposte:


29

Molto probabilmente ti manca il libssl-devpacchetto.

Ma perché non salvarti tutti i problemi e usare semplicemente un PPA per nginx ?


Cosa sono esattamente i PPA? Da quello che posso raccogliere le persone possono caricare i pacchetti da installare usando apt-get? Ho pensato che il modo migliore per assicurarmi di ottenere sempre l'ultima versione del software fosse compilarlo dalla fonte dal sito web.
— James Linton,

1
I PPA sono archivi di pacchetti personali. Come hai detto, devono distribuire i pacchetti dpkg. La compilazione dal sorgente potrebbe farti ottenere la versione più recente, ma questo non è sempre necessario. Informazioni per Ubuntu e PPA sono disponibili qui: wiki.nginx.org/Install#Official_Debian.2FUbuntu_packages
— Christopher Perrin,

Le informazioni sul wiki di nginx sono buone. Alla fine ti porterà al PPA che ho collegato. :)
— Michael Hampton

Bene grazie, esaminerò l'utilizzo dei PPA in futuro. Ma per questo problema, l'installazione ha libssl-devfunzionato. :)
— James Linton l'

Nginx PPA è la strada da percorrere in quanto fornisce l'ultimo binario ufficiale di Nginx tramite apt. Ubuntu in genere fornisce una versione di Nginx alcune versioni a scopo di supporto, ma utilizzando Nginx PPA, è possibile ottenere l'ultima versione da Nginx.org. Molto più facile da usare questo approccio rispetto alla compilazione dalla fonte e ottimo per gli script di provisioning automatizzato. Mantiene il tuo apt sul tuo sistema consapevole della versione di Nginx attualmente installata rendendo gli aggiornamenti basati su apt molto più facili. A meno che non vi sia un motivo specifico per la compilazione dalla fonte, l'approccio PPA è molto più facile da mantenere in produzione.
— Joe J,

1

Ho usato quanto segue per ottenere openssl per nginx:

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

Tutti gli altri tentativi non hanno funzionato o sono stati ingombranti.

Spero che questo aiuti un altro ...


Mi ha aiutato a capire che la --with-openssl=bandiera è di puntare ai file di origine . Se vuoi collegarti a un OpenSSL già compilato / di sistema che nginx ./configurenon riesce a trovare, vedi questo post sul forum : --with-cc-opt="-I /usr/local/include" --with-ld-opt="-L/usr/local/lib64 -ldl -Wl,-rpath,/usr/local/lib64"(YMMV).
— venerdì

Grazie per il riferimento aggiuntivo @vesperto
— skidadon

0

Nel caso in cui si desideri verificare che libssl sia installato nel posto giusto, è possibile digitare which openssle quindi ldd /path/to/openssl.


0

Anche quando OpenSSL è già installato ( brew install openssl), configure stesso suggerisce una soluzione alternativa, che ha funzionato per me:

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


L'opzione --with-openssl=punta a un repository github openssl clonato? Potresti prendere in considerazione la modifica della tua risposta per riflettere ciò in quanto potrebbe essere fonte di confusione per le persone senza una comprensione sufficiente.
— Jamie Lindsey,

sì, / GitHub / openssl / openssl è un repository clonato di github.com/openssl/openssl.git
— Pnemonic

0

Se qualcuno sta ancora affrontando un problema durante la compilazione di nginx dall'origine con l'errore relativo a pcre, compila con l'attributo "--with-pcre". E per fornire il percorso PCRE, non fornire il percorso installato. Fornire percorso software pcre.

  1. Installa pcre con

./configure

rendere

sudo make install

Quindi, fornire il percorso del percorso sorgente 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

Nel mio caso,

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

Grazie.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.