Und gleich noch ein Beitrag zum Thema Nginx: SPDY, eine durch Google initiierte Erweiterung von HTTP bzw. HTTPS, kann bis dato (März 2013) nur durch einen Patch in aktuellen Nginx-Versionen (1.3.x) aktiviert werden.
Da sich Nginx ohne weitere Abhängigkeiten kompilieren lässt, kann man auch auf älteren Linux-Installationen von den Nginx-Features profitieren. So habe ich noch einen etwas betagten Gentoo-Server im Einsatz, auf dem sich nicht mehr zuverlässig mit emerge und dem Portage-Tree arbeiten lässt. Gleiches gilt natürlich auch für eher konservativ eingestellte Enterprise-Distributionen wie SuSE oder RedHat, die entsprechend ihres Auftrags nur sehr veraltete Versionen der Software bereitstellen – wenn überhaupt!
OpenSSL mit NPN installieren
Eine Abhängigkeit ergibt sich aufgrund von SPDY aber doch: OpenSSL muss in der Version ab 1.0.1 vorhanden sein, denn erst in dieser Version wurde das für SPDY erforderliche Next Protocol Negotiation (NPN) implementiert.
Für den aktuellen Verwendungszweck reicht es aus, die Sourcen von OpenSSL herunter zu laden und zu entpacken:
cd /usr/local/src wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz tar xzf openssl-1.0.1e.tar.gz
Letztendlich ist es nicht zwingend notwendig, OpenSSL zu kompilieren und zu installieren, schaden kann es aber natürlich nicht. Um Konflikte zu vermeiden, kann ein Installationspfad außerhalb von PATH gewählt werden (standardmäßig ist das Zielverzeichnis /usr/local/ssl
):
cd /usr/local/src/openssl-1.0.1e ./config make make install
Nginx mit SPDY patchen und installieren
Um SPDY in Nginx nutzen zu können, muss der Source-Code von Nginx heruntergeladen und gepatcht werden. Die README zum SPDY Patch beschreibt das sehr gut. Fürs Kompilieren sind außer dem Pfad zum OpenSSL-Source-Code auch die Optionen --with-http_ssl_module
und --with-http_spdy_module
anzugeben. Damit sich die Installation in die Linux-Umgebung besser einbettet, habe ich außerdem noch ein paar Pfade angepasst:
cd /usr/local/src wget http://nginx.org/download/nginx-1.3.13.tar.gz tar xzf nginx-1.3.13.tar.gz cd nginx-1.3.13 wget http://nginx.org/patches/spdy/patch.spdy.txt patch -p1 < patch.spdy.txt ./configure --prefix=/usr/local --with-openssl=/usr/local/src/openssl-1.0.1e --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 --with-http_ssl_module --with-http_spdy_module make make install
In der nginx.conf
muss bei der listen
-Direktive ssl
und spdy
zum Aktivieren angegeben werden:
server { listen 443 ssl spdy default_server; ssl_certificate server.crt; ssl_certificate_key server.key; ... }
Verbreitung von SPDY in Browsern
Leider unterstützen noch nicht besonders viele Browser SPDY, zur Zeit sind dies lediglich Google Chrome/Chromium, Firefox und Opera auf den Desktops, bei den mobilen Varianten Android Browser, Opera Mobile, Chrome for Android und Firefox for Android.
Can I use… – für Webentwickler ohnehin zu empfehlen – stellt dazu eine hervorragende Übersicht zur Verfügung: http://caniuse.com/spdy