Nginx selbst kompilieren

Wer Debian verwendet und auf Nginx setzt, wird früher oder später mit den integrierten Modulen nicht mehr auskommen. Die Lösung: Nginx selbst kompilieren.

Zuletzt aktualisiert am 09.06.2019

Was zuerst kompliziert klingt, ist in der Praxis recht einfach und für den Alltag tauglich – dieser Blog hier läuft mit einer selbst kompilierten Version Nginx 1.11.1. Obwohl unkompliziert, sind doch einige Voraussetzungen nötig, um Nginx unter Debian 7.6 bzw. Debian 8 (Jessie) selbst zu kompilieren:

# apt-get install build-essential
# apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev


Wenn das geschafft ist, geht es daran Nginx selbst zu kompilieren. Zuerst muss man die aktuelle Version von nginx.org herunterladen, danach entpacken:

# mkdir nginx_temp && cd nginx_temp
# wget http://nginx.org/download/nginx-1.11.1.tar.gz
# tar xvfz nginx-1.11.1.tar.gz && cd nginx-1.11.1

Nun müssten die richtigen Konfigurations-Optionen gesetzt werden, damit die Debian-Verzeichnisse weiter verwendet werden. Dies ist praktisch, wenn man vorher schon einmal Nginx eingesetzt hat. So muss man nicht noch einmal die Server-Konfiguration anpassen und kann direkt mit der neuen Nginx-Version weitermachen.

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.17.0/debian/debuild-base/nginx-1.17.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --with-openssl=/usr/local/src/openssl --add-module=/usr/local/src/nginx/incubator-pagespeed-ngx-1.13.35.2-stable --add-module=/usr/local/src/nginx/ngx_brotli

Die letzten Anweisungen beziehen sich auf zusätzliche 3rd-Party-Module, die aus über das Nginx-Wiki bezogen werden können. Damit bekommt man neben einem PageSpeed-Modul auch die Möglichkeit, den Microcache zu löschen. Verwendet man diese Module nicht, kann man die entsprechenden Configure-Anweisungen weglassen.
Danach bleibt es nur noch, Nginx zu kompilieren und zu installieren, damit die neue Nginx-Version zur Verfügung steht:

# make && make install

Was hat man nun davon? Durch die Verwendung der aktuellen Nginx-Version bekommt man auch weitere Features, die dem standardmäßigen Nginx fehlen. Dadurch erst kann man das volle Potential des schlanken Webservers ausnutzen und die Möglichkeiten nutzen, die das ngx_pagespeed-Module bietet.

Weitere Informationen zum Thema „schnelle Webseiten“ gibt es auf Boost-for-Websites.de!

3 Kommentare

  1. Hallo,

    erstmal danke für Dein Tutorial. Ich habe eine Owncloud Installation auf einem Raspberry und betreibe diese mit NGINX und einer MySQL Datenbank. Meine jetzige Version von NGINX ist 1.2.1. Leider bekomme ich bei dem letzten Befelhl eine fehlermeldung: make: *** Keine Regel vorhanden, um das Target »build«,
    benötigt von »default«, zu erstellen. Schluss.
    Hast Du eine Idee, was ich falsch gemacht habe? Bin in Linux leider nicht besonders bewandert… Daher würde mir der exakte Befehl helfen, den eich für das Kompilieren eingeben muss. Gruss, Dnaiel

    1. Hast du die Build-Essentials (der erste Schritt) installiert? Auf einem Raspberry Pi mit Raspbian habe ich es noch nicht probiert, ob man da etwas besonderes beachten muss. Prinzipiell sollte aber der Ablauf wie unter x86-Linux funktionieren, werde es mir noch einmal anschauen.

      Hast du mal die aktuelle Version von der Nginx-Webseite probiert?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.