Nous allons recompiler nginx avec les sources provenant des dépôts debian. Nous recompilons nginx afin de lui compiler des modules dynamic, ainsi que modifier du code.
Avant de commencer les manipulations, il est souhaitable de créer un dossier de travail et de vous y placer.
Il vous suffira pour nettoyer votre plan de travail d'effectuer un "rm -fr".
I- Préparer la compilation
apt update && apt install dpkg-dev git
apt build-dep nginx
Si vous avez une erreur : "You must put some 'deb-src' URIs in your sources.list", il vous manque simplement les dépôts pour les sources.
Dans le fichier /etc/apt/source.list, copier chaque ligne et remplacer deb par deb-src, des lignes copiés.
(ré-excuter 'apt update')
II- Télécharger les sources de nginx (et des modules souhaité)
apt source nginx
git clone https://github.com/google/ngx_brotli #brotli support for nginx
III- Compilation des modules nginx dynamiquement
Compiler:
cd ./ngx_brotli && git submodule update --init && cd ../nginx-*/
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
Copier le résultat dans le dossier de modules nginx:
mkdir -p /usr/lib/nginx/modules
cp objs/ngx_http_brotli_filter_module.so /usr/lib/nginx/modules/
cp objs/ngx_http_brotli_static_module.so /usr/lib/nginx/modules/
Modifier les fichiers de conf nginx afin de charger les modules et les utiliser:
Dans le fichier /etc/nginx/nginx.conf, avant tous les blocks (events/http)
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Dans le fichier /etc/nginx/nginx.conf, dans le block http (pour l'organisation, généralement à côté des entrées gzip)
brotli on;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/vnd.api+json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
IV- Compilation de nginx (+ modification la valeur des header "serveur")
Modification du code source pour modifier la valeur serveur
nano nginx-*/src/http/ngx_http_header_filter_module.c
Modifier les lignes de ngx_http_server_string, ngx_http_server_full_string et ngx_http_server_build_string (ligne ~48)
static u_char ngx_http_server_string[] = "Server: ." CRLF;
static u_char ngx_http_server_full_string[] = "Server: ." CRLF;
static u_char ngx_http_server_build_string[] = "Server: ." CRLF;
Compiler nginx
cd ../nginx-*/
dpkg-buildpackage -rfakeroot -uc -b
cd ..
Installer la compilation.
apt install nginx-extras #Installe la version max de nginx(+dep) dispo en communautaire, afin de facilité la tâche d'après.
dpkg -i *.deb #Installe tous les paquets fraichement compiler
Conclusion
Attention! A la prochaine mise à jour (même mineur), il faudra probablement tout recommencer de zero.
Pour cela, vous pouvez effacer tout les fichier en rapport avec nginx créer par ce tutoriel, pour recommencer à zero.
Vous pouvez également bloquer les mise à jour de nginx avec la commande suivant, mais à vos risques et périls:
apt-mark hold nginx
#apt-mark unhold nginx #Pour ré-autoriser la mise à jour.