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!