Dieser Artikel ist bereits über 3 Jahre alt. Die Inhalte sind wahrscheinlich bereits überholt und nicht mehr aktuell.

Da die meisten modernen Browser mittlerweile kein NPN mehr (sondern nur noch ALPN) unterstützen, kann nginx unter Debian 8 keine Webseiten mehr mit HTTP/2 ausliefern. Die nötige OpenSSL-Bibliothek ist dort nur in einer veralteten Version vorhanden.

Abhilfe schafft eine aktuellere OpenSSL-Version, die durch ein Upgrade auf Debian 9 (Stretch) installiert werden kann. Um ein solches risikoreiches Upgrade zu umgehen, lässt sich allerdings auch OpenSSL aus den jessie-backports installieren.

OpenSSL Upgrade

Zunächst muss das Backports-Repository in die /etc/apt/sources.list aufgenommen werden. Dazu die folgenden Zeilen in der besagten Datei einfügen:

deb http://ftp.de.debian.org/debian/ jessie-backports main non-free contrib
deb-src http://ftp.de.debian.org/debian/ jessie-backports main non-free contrib

Anschließend den lokalen Cache aktualisieren und OpenSSL upgraden:

apt-get update
apt-get install -t jessie-backports openssl

nginx Upgrade

Nun muss noch nginx aus den herstellereigenen Repositories aktualisiert werden. Um die Kompatibilität mit der neuen OpenSSL-Version zu gewährleisten, muss dabei die für Ubuntu 16.04 kompilierte Version verwendet werden.

Dazu fügen Sie zunächst die folgenden Zeilen in die /etc/apt/sources.list.d/nginx.list Datei ein:

deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx

Anschließend den lokalen Cache aktualisieren und nginx upgraden:

apt-get update
apt-get --only-upgrade install nginx

nginx Konfiguration

Zum Abschluss kann nun die Server-Konfiguration zur Verwendung von HTTP/2 angepasst werden. Fügen Sie einfach http2 an das Ende der listen 443 ssl-Zeile des Hosts ein:

server {
    listen 443 ssl http2;

    ...
}

Anschließend muss nur noch die Konfiguration getestet und neu eingelesen werden:

nginx -t
systemctl reload nginx.service