Compiler NGINX peut permettre d’augmenter la sécurité (utilisation d’une autre bibliothèque comme LibreSSL ou BoringSSL) ou en utilisant la toute dernière version d’OpenSSL. Il est également possible de directement rajouter des modules ou de supprimer ceux de base.
Préparation
Mise à jour et installation des paquets
Mise à jour des paquets déjà présents
# apt-get update |
Installation des paquets nécessaires, l’option -y
permet de valider automatique la confirmation d’installation
# apt-get install curl libgeoip-dev libxslt-dev libpcre3 libpcre3-dev build-essential zlib1g-dev libbz2-dev libssl-dev tar unzip curl git -y |
Récupération des sources
On se place dans le dossier /usr/src/
# cd /usr/src/ |
Il faut prendre la dernière version de NGINX : https://nginx.org/en/download.html, ou directement dans https://nginx.org/download/
# curl -fLRO "http://nginx.org/download/nginx-1.21.5.tar.gz |
Méthode rapide (et qui fonctionne tout le temps) :
Ici on met dans la variable latest_nginx
la dernière version d’NGINX téléchargée à l’aide de curl
, le tout est renvoyé dans la commande egrep
qui se charge de récupérer la liste de toutes les versions disponible, le résultat est ensuite renvoyé dans la commande head
qui se charge de récupérer le 1er résultat (le nom de la version la plus récente)
On fait ensuite un simple curl
avec l’adresse du répertoire de téléchargement et la variable ${latest_nginx}
contenant la dernière version que l’on désarchive au passage avec le même nom
# latest_nginx=$(curl -L http://nginx.org/en/download.html | egrep -o "nginx\-[0-9.]+\.tar[.a-z]*" | head -n 1) |
Il faut ensuite prendre la dernière version d’OpenSSL : https://www.openssl.org/source/
# latest_openssl=$(curl -L https://www.openssl.org/source | egrep -o "openssl\-[0-9.]+\.tar[.a-z]*" | head -n 1) |
Suppression des archives (**Attention : vérifiez que vous n’en avez pas d’autres que vous souhaiteriez conserver)
# rm /usr/src/*.tar.gz |
Configuration
Dans le dossier de NGINX, ici on utilise le contenue de la variable ${latest_nginx}
en éliminant se qui se trouve après le point (inclu)
# cd "${latest_nginx//.tar*}" |
On lance la configuration à adapter selon vos besoins
# ./configure --http-client-body-temp-path=/usr/local/etc/nginx/body --http-fastcgi-temp-path=/usr/local/etc/nginx/fastcgi --http-proxy-temp-path=/usr/local/etc/nginx/proxy --http-scgi-temp-path=/usr/local/etc/nginx/scgi --http-uwsgi-temp-path=/usr/local/etc/nginx/uwsgi --user=www-data --group=www-data --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/usr/local/etc/nginx.pid --lock-path=/usr/local/etc/nginx.lock --with-pcre-jit --with-http_v2_module --with-debug --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_gzip_static_module --with-http_sub_module --with-http_xslt_module --with-file-aio --with-threads --with-http_ssl_module --with-http_geoip_module --with-openssl=/usr/src/${latest_openssl//.tar*} --with-ld-opt=-lrt |
Version plus lisible pour les Humains :
# ./configure \ |
Vous avez ensuite votre résumé de configuration :
Configuration summary |
Compilation
En lançant simplement :
# make && make install |
Et en patientant
Lancer ensuite le service
Documentation
https://www.abyssproject.net/2016/11/compiler-nginx-pourquoi-comment/
https://en.wikipedia.org/wiki/OpenSSL