4Jul/133

Hands on SPDY

Hier und da mag man es vielleicht schon mal bemerkt haben, wenn auch nur, weil das geliebte soziale Netzwerk oder die Lieblings Suchmaschine etwas schneller lädt - all diese verwenden eine neue Technologie: SPDY

Von Google entwickelt, dann open-sourced und nun für alle zugänglich.

Was ist SPDY genau?

Wikipedia beschreibt das ganze als experimentelles, TCP-basierendes Netzwerkprotokoll. Nun, ich würde es der Einfachheit halber eher als HTTPS-Upgrade erklären. Denn eines der Vorteile von SPDY ist, dass alles verschlüsselt ist.

Was soll SPDY verbessern?

Im Zusammenhang mit SPDY lese ich immer wieder "HTTP sei in die Jahre gekommen" - ob das stimmt, schwer zu beurteilen, immerhin funktioniert es mal gar nicht so schlecht - andererseits Innovation ist immer gut - in allen Bereichen.
Jedenfalls Webseiten laden schneller, alles ist soweit verschlüsselt, es gibt sog. "Push-Streams" (heißt auch der Server kann Übertragungen initiieren, wenn ich das richtig verstanden habe so ein bisschen wie Websockets - wäre daher interessant ein paar Benchmarks, etc zu sehen, gerade weil es auch ein Node.js Modul gibt)

Was brauchen wir für eine Test-Installation?

  • Einen Server ála VPS oder Dedicated (wir werden die aktuellste Ubuntu Version nutzen)
  • Irgendeine Webseite, kann zur Not auch eine leere index.html sein
  • Apache oder Nginx (wir werden Nginx nutzen)
  • SSL Zertifikat (zum testen kann das natürlich auch ein selbst signiertes sein
  • Bisschen Basic Linux Kenntnisse wären hilfreich

Implementationen

Tortzdessen, dass SPDY eine eher neue Technologie gibt, arbeite einige Leute an diversen Implementationen:

  • Google Chrome - war der erste Browser der SPDY unterstützte
  • Firefox seit Version 11 bzw. 13
  • Opera seit Version 12.10

Kann mein Browser schon SPDY und wie wirkt sich das aus?
Hier gibt es eine interessante Informationsseite, bei der man einmal überpüfen kann, ob der eigene Browser SPDY unterstützt und zugleich noch den Geschwindigkeitsunterschied mit einem kleinen Live-Benchmark ausprobieren kann.

Installationsanleitung
Bevor wir beginnen noch ein kurzes Wort zur Stabilität und Sicherheit: Auch wenn wir das alles auf zwei Server in unserem Contabo Labor getestet haben, können wir natürlich keine Haftung für irgendwas übernehmen und sogar Google nennt SPDY eher experimentell (wobei man hier dazu sagen muss, Twitter, Facebook, Google und einige weitere benutzen das bereits produktiv)

Um die entsprechenden Werkzeuge (zum kompilieren, etc) auf unserem Server zu haben: apt-get install checkinstall

Leider scheinen die offiziellen Nginx Repositories keine Version zu haben mit SPDY, daher müssen wir uns das selbst kompilieren.

wget http://nginx.org/download/nginx-1.4.1.tar.gz
tar xfz nginx-1.4.1.tar.gz
cd nginx-1.4.1/

Jetzt müssen wir quasi noch konfigurieren, was wir danach kompilieren

./configure --with-http_ssl_module --with-http_spdy_module --conf-path=/etc/nginx/nginx.conf
make # Wenn Du mehr als einen Kern hast, kannst du auch entsprechend schneller kompilieren: mit -j Kernanzahl
make install

Wenn kein Fehler ausgegeben wurde, sollte Nginx nun installiert sein. Jetzt noch kurz die Config anlegen:

server {
listen 80;

server_name spdy.dev;

rewrite ^(.*) https://$server_name$1 permanent;
}

server {
listen 443 ssl spdy default_server;

server_name spdy.dev;

ssl on;
ssl_certificate /etc/nginx/ssl/spdy.crt;
ssl_certificate_key /etc/nginx/ssl/spdy.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:-ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;

root /var/www;
}

Diese muss zwischen den http{} Teil in /etc/nginx/nginx.conf - wie man das genau löst (also über include oder direkt) ist egal.

Dann noch unser SSL Zertifikat:
cd /etc/nginx
mkdir ssl
cd ssl

openssl genrsa -out spdy.key 2048
openssl req -new -key spdy.key -out spdy.csr
openssl x509 -req -days 720 -in spdy.csr -signkey spdy.key -out spdy.crt

Dann könnten wir nginx gleich mal starten: /usr/local/nginx/sbin/nginx

Mit einem netstat -tulpen können wir überprüfen ob nginx auch wirklich an den Ports lauscht.

Was als letztes noch beachtet werden muss: Wenn man Nginx selbst gebaut hat (also so wie wir eben), muss ich auch selbst darum gekümmert werden, wie Nginx ab dem Bootvorgang startet, aber wie es in der Technik immer ist, gibt es da auch viele Möglichkeiten und soll nicht Teil dieses Blogeintrages sein.

Wie kann ich nun überprüfen ob das mit SPDY auf meiner Installation geklappt hat?
Addon für den Chrome und ein Addon für den Firefox

Interessante Lektüre
Natürlich können wir nicht alles um dieses eher komplexe Thema in einen Blogpost packen, daher gibts hier noch mehr Infos:

So, nach all dem - wann aktivierst Du SPDY mit deiner Webseite?

 

Posted by: Florian | Tagged as: , , , , , Leave a comment
Comments (3) Trackbacks (0)
  1. Hilfreicher Artikel, vielen Dank. :)

    Sehe ich das richtig das –with-http_ssl_module doppelt in den Konfigurationsoptionen enthalten ist? IPv6 Unterstützung mit –with-ipv6 könnte man vielleicht auch noch in Betracht ziehen falls verfügbar.
    Für etwa “faulere” Admins gibt es für Debian Wheezy die dotdeb Pakete (dotdeb.org) in denen nginx-Versionen mit spdy-Unterstützung enthalten sind.

  2. Hallo Markus,

    vielen Dank für deinen netten Kommentar.

    Du hast recht, das “–with-http_ssl_module” ist hier doppelt vorhanden, haben wir gleich entfernt sorry und danke dafür. (Hintergrund: Da gabs am Anfang ein paar Probleme beim selbst configurieren/kompilieren, wegen fehlender Libs, daher hatte ich wohl auch kurz gedacht, dieses Argument vergessen zu haben).

    IPv6 Unterstützung mit –with-ipv6 könnte man vielleicht auch noch in Betracht ziehen falls verfügbar.

    Ja, hast du genauso recht, habe ich aber absichtlich weg gelassen, denn dann müsste man ja noch so viele weitere Sachen beachten und der Artikel sollte ja eher ála proof-of-concept sein. Wenn man das Produktiv einsetzen möchte, hoffe ich doch, das derjenige sich selbst noch ein bisschen damit beschäftigt und sich z.B. anschaut, wie die in den Repos enthaltenen Nginx kompiliert sind.

    Wegen den Dotdeb Repos: Guter Tipp, kann man nur weiterempfehlen.

  3. Geile Sache, habs gerade erst entdeckt. Glücklicherweise ist bei ArchLinux die Option schon aktiviert und man muss nur kurz die Configs patchen. Ich weiss noch nicht, ob es am 5 Minuten zurückliegenden reboot oder an SPDY liegt, aber: Gerade lädt alles superschnell.

    MfG Benedikt Heine

    PS: Warum ist bei euch auf der Seite kein SPDY aktiviert?


Leave a comment


No trackbacks yet.