GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie Nginx mit HTTP/2-Unterstützung unter Ubuntu 18.04 ein

Nginx ist ein robuster, schneller, zuverlässiger und dynamischer Open-Source-Webserver, der für die Bereitstellung von stark frequentierten Websites beliebt ist. Darüber hinaus ist es bekannt für seine einfache Konfiguration, hohe Skalierbarkeit und Unterstützung für eine Vielzahl von Protokollen.
Zu den von Nginx unterstützten Protokollen gehört das neue HTTP/2-Protokoll, dessen Hauptvorteil gegenüber seinem Vorgänger HTTP 1.1 ist die hohe Übertragungsgeschwindigkeit, die für inhaltsreiche Websites erforderlich ist.

In diesem Leitfaden werden wir uns mit der Installation und Einrichtung eines sicheren Nginx-Servers mit HTTP/2-Unterstützung befassen:

Voraussetzungen

Lassen Sie uns zunächst die Flugkontrolle durchgehen und nachsehen, ob wir Folgendes haben

  • Eine Serverinstanz von Ubuntu 18.04 LTS
  • Nginx Version 1.9.5 oder höher (Um die Version von Nginx zu überprüfen, führen Sie nginx -v aus ), lesen Sie Nginx unter Ubuntu 18.04 installieren.
  • OpenSSL Version 1.0.2 oder höher (Überprüfen Sie die Version mit der openssl-Version)
  • Ein normaler Nicht-Root-Benutzer mit sudo-Berechtigungen
  • Ein vollständig qualifizierter Domänenname (FQDN) In diesem Fall verwenden wir crazytechgeek.info bei GoDaddy gekauft.

    Der A-Eintrag des Domainnamens sollte auf die IP-Adresse des Servers verweisen. crazytechgeek.info wurde auf 216.200.116.207 verwiesen.

  • Ein SSL-Zertifikat (entweder ein selbstsigniertes Zertifikat oder eines von Let’s encrypt SSL. Ebenso können Sie eines von einem anderen Anbieter erwerben.

Schritt 1 – Aktivieren der HTTP /2.0-Unterstützung

Zunächst wird davon ausgegangen, dass Sie den Nginx-Serverblock unter

konfiguriert haben
/etc/nginx/sites-available/your_domain

In unserem Fall ist der Serverblock /etc/nginx/sites-available/crazytechgeek.info .

Öffnen Sie mit Ihrem bevorzugten Texteditor die Serverblockdatei und suchen Sie die Datei listen Direktive wie gezeigt

Die erste Anweisung gibt IPv6-Verbindungen an, während die zweite für IPv4-Verbindungen bestimmt ist

Jetzt werden wir jede Direktive so ändern, dass sie ein http2 enthält Flagge wie gezeigt

Dadurch wird Nginx angewiesen, HTTP/2 auf unterstützten Browsern zu verwenden

Speichern Sie die Konfigurationsdatei und beenden Sie Ihren Editor.

Als nächstes öffnen Sie /etc/nginx/sites-available/default Datei und nehmen Sie die gleichen Änderungen vor

Speichern und beenden Sie den Texteditor.

Um sicherzustellen, dass keine der Nginx-Dateien Syntaxfehler enthält, führen Sie den folgenden Befehl aus

$ sudo nginx -t

Ausgabe

Schritt 2 – Alte und unsichere Chiffren löschen

Damit HTTP/2 wie erwartet funktioniert, müssen wir vermeiden, alte und unsichere Chiffren zu verwenden, die auf der HTTP/2-Blacklist stehen. Cipher Suites sind kryptografische Algorithmen, die vorgeben, wie der Datenverkehr zu verschlüsseln ist.

Wenn certbot verwendet wurde, um die Zertifikate zu erhalten, dann die Chiffren im Pfad /etc/letsencrypt/options-ssl-nginx.conf sind für HTTP/2 nicht sicher genug. Die Änderung dieser Datei führt jedoch nur zu Fehlern und verhindert, dass certbot Updates anwendet. Das bedeutet, dass wir unsere Liste der Chiffren angeben und Nginx anweisen müssen, die Datei zu ignorieren

Öffnen Sie die Konfigurationsdatei für den Domänenserverblock Ihres Nginx

$ vim /etc/nginx/sites-available/crazytechgeek.info

Kommentieren Sie diese Zeile

# include /etc/letsencrypt/options-ssl-nginx.conf;

Hängen Sie unterhalb dieser Zeile die folgende Zeile an, um die zulässigen Chiffren zu definieren

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Speichern Sie die Datei und beenden Sie den Texteditor

Wenn ein selbst zugewiesenes Zertifikat oder ein Drittanbieterzertifikat verwendet wurde, öffnen Sie die Datei

/etc/nginx/snippets/ssl-params.conf 
$ sudo vim /etc/nginx/snippets/ssl-params.conf

Suchen Sie die Zeile wie unten gezeigt

...
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
...

Ändern Sie die Datei entsprechend wie unten gezeigt


...
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Speichern und beenden Sie abschließend die Konfigurationsdatei

Suchen Sie erneut nach Nginx-Konfigurationsfehlern

$ sudo nginx -t

Wenn alles gut gelaufen ist, sollten Sie die unten gezeigte Ausgabe sehen, wie zuvor gezeigt

Starten Sie Nginx neu

$ sudo systemctl reload nginx

Im nächsten Schritt testen wir, ob unser Server HTTP/2-Seiten bedienen kann

Schritt 3 – Testen, ob HTTP/2 aktiviert ist

Lassen Sie uns nun testen, ob HTTP auf unserem Nginx-Webserver ausgeführt wird und aktiviert ist
Führen Sie in Ihrem Terminal den folgenden Befehl aus

curl -I -L https://your_domain

In unserem Fall soll es sein

curl -I -L https://crazytechgeek.info

Ausgabe

Alternativ können Sie HTTP/2 verifizieren, indem Sie die Google-Entwicklertools öffnen, indem Sie auf

klicken
Ctrl + Shift + I 

Klicken Sie anschließend auf Network Tab.

Im Protocol Achten Sie darauf, die Bezeichnung h2 zu finden

Schritt 4 – HTTP Strict Transport Security bereitstellen

Obwohl wir sehr genau wissen, dass unser Server HTTP-Anforderungen an HTTPS umleiten kann, möchten wir HSTS HTTP Strict Transport Security aktivieren, um solche Umleitungen zu eliminieren. Sollte ein Browser zufällig auf einen HSTS-Header stoßen, versucht er für eine gewisse Zeit nicht erneut, sich mit dem Server zu verbinden. Die IT tauscht Daten nur über das sichere und verschlüsselte HTTPS-Protokoll aus.

Öffnen Sie dazu die Nginx-Konfigurationsdatei

$ vim /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile an

add_header Strict-Transport-Security "max-age=15768000" always;

max-age wird in Sekunden eingestellt

Wenn Ihre Website Subdomains hat und Sie HSTS auf alle anwenden möchten, hängen Sie includeSubDomains an Flag am Ende der Zeile

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

Speichern und beenden Sie die Konfigurationsdatei.

Überprüfen Sie wie immer, ob Fehler vorliegen

$ sudo nginx -t


Starten Sie schließlich Nginx neu

$ sudo systemctl restart nginx

Schlussfolgerung

An diesem Punkt stellt Ihr Nginx-Server jetzt HTTP/2-Seiten bereit.
Sie können auch https://tools.keycdn.com/http2-test besuchen um den HTTP/2-Status Ihrer Website wie gezeigt zu testen

Alternativ können Sie auch diese Seite besuchen

https://http2.pro/

Verwenden Sie für detailliertere Ergebnisse

https://www.ssllabs.com/ssltest/


Linux
  1. So installieren Sie den HTTP-Git-Server mit Nginx unter Ubuntu 16.04

  2. So installieren Sie den HTTP-Git-Server mit Nginx unter Ubuntu 20.04

  3. So richten Sie Nginx als Reverse Proxy unter Ubuntu 20.04 ein

  4. So richten Sie Apache mit HTTP/2 unter Ubuntu 16.04 ein

  5. So richten Sie Nginx mit HTTP/2-Unterstützung unter Debian 9 ein

So installieren Sie NGINX unter Ubuntu 20.04

So richten Sie die Zeitsynchronisierung mit NTP unter Ubuntu 18.04 ein

So richten Sie einen Seafile-Server mit Nginx unter Ubuntu 18.04 ein

So richten Sie einen FTP-Server mit ProFTPD in Ubuntu 18.04 ein

So richten Sie einen Mailserver mit Modoboa unter Ubuntu 20.04 ein

So aktivieren Sie HTTP/2 mit Apache in Ubuntu