Ajouter des modules nginx sous Linux

Comment recompiler nginx avec des modules supplémentaires sur Debian, Ubuntu et CentOS.

Lorsque nginx est installé via le gestionnaire de paquets du système d'exploitation, il est impossible d'ajouter ou de supprimer des modules — nginx est livré avec une configuration de build fixe. Pour inclure un module personnalisé, nginx doit être recompilé manuellement depuis les sources.

Étape 1. Récupérer la configuration nginx actuelle

Exécutez la commande suivante et enregistrez la sortie dans un éditeur de texte — vous en aurez besoin lors de l'étape de configuration :

nginx -V

Exemple de sortie :

nginx version: nginx/1.12.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log ...

Dans cet exemple, la version 1.12.1 est installée — téléchargez cette même version à l'étape suivante.

Étape 2. Télécharger les sources de nginx

wget http://nginx.org/download/nginx-1.12.1.tar.gz

Extrayez l'archive et placez-vous dans le répertoire des sources :

tar -xvf nginx-1.12.1.tar.gz
cd nginx-1.12.1

Étape 3. Installer le module PageSpeed

bash <(curl -f -L -sS https://ngxpagespeed.com/install) \
     --nginx-version $nginxversion

Sauvegarder tous les modules :

bash <(curl -f -L -sS https://ngxpagespeed.com/install) -m

Étape 4. Configurer nginx avec le nouveau module

Dans la sortie nginx -V enregistrée, copiez les arguments de configuration à partir de --prefix= jusqu'au (mais sans l'inclure) premier --add-module= — les entrées --add-module= existantes ne sont pas nécessaires.

Exécutez ./configure avec ces arguments et ajoutez --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable à la fin :

./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-log-path=/var/log/nginx/access.log \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--lock-path=/var/lock/nginx.lock \
--pid-path=/var/run/nginx.pid \
--with-pcre-jit --with-http_gzip_static_module \
--with-http_ssl_module --with-ipv6 \
--without-http_browser_module --with-http_geoip_module \
--without-http_memcached_module --without-http_referer_module \
--without-http_scgi_module --without-http_split_clients_module \
--with-http_stub_status_module --without-http_ssi_module \
--without-http_userid_module --without-http_uwsgi_module \
--add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable

Nos produits et services

Hébergement webFonctionne sur des disques NVMe ultra-rapides. Convient aux sites de toute complexité.
Commande
VPSInfrastructure cloud flexible avec accès root complet.
Commande
Serveurs dédiésServeurs physiques pour une performance maximale.
Commande

Étape 5. Compiler nginx

make
make install

Une fois la compilation terminée, vérifiez que le nouveau module est bien présent :

/etc/nginx/sbin/nginx -V

La sortie doit contenir --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable.

Étape 6. Remplacer le binaire nginx

Arrêtez nginx :

service nginx stop

Renommez le binaire actuel en guise de solution de repli :

mv /usr/sbin/nginx /usr/sbin/nginx_back

Déplacez le binaire nouvellement compilé à sa place :

mv /etc/nginx/sbin/nginx /usr/sbin/nginx

Supprimez le répertoire devenu inutile :

rm -rf /etc/nginx/sbin

Vérifiez que le nouveau binaire est bien utilisé :

nginx -V

La sortie doit contenir --add-dynamic-module=/root/incubator-pagespeed-ngx-latest-stable.

Démarrez nginx :

service nginx start

Nettoyez le répertoire des sources :

cd ../
rm -rf nginx-1.12.1

Aide

Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter