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 01.06.2016

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 --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-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,--as-needed' --with-ipv6 --add-module=../ngx_pagespeed-release-1.11.33.2-beta --add-module=../ngx_cache_purge-2.3 --add-module=../ngx_http_substitutions_filter_module --with-openssl=../../openssl-1.0.2h --add-module=../brotli/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!