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

So installieren Sie Nginx mit Let’s Encrypt TLS/SSL unter Ubuntu 20.04

NGINX ist eine kostenlose Open-Source-HTTP-Server-Software. Zusätzlich zu seinen HTTP-Serverfunktionen kann NGINX auch als Proxy-Server für E-Mail (IMAP, POP3 und SMTP) und als Reverse-Proxy und Load Balancer für HTTP-, TCP- und UDP-Server fungieren. Das Ziel hinter NGINX war es, den schnellsten Webserver zu schaffen, und die Aufrechterhaltung dieser Exzellenz ist nach wie vor ein zentrales Ziel des Nginx-Projekts. NGINX schlägt Apache und andere Server in Benchmarks, die die Leistung von Webservern messen, und ist laut W3Tech jetzt der am häufigsten verwendete Webserver.

Im folgenden Tutorial erfahren Sie, wie Sie Nginx unter Ubuntu 20.04 LTS mit dem Standard-Ubuntu-Repository oder dem alternativen PPA von Ondřej Surý mit einem kostenlosen TLS/SSL-Zertifikat von Let’s Encrypt installieren.

Voraussetzungen

  • Empfohlenes Betriebssystem: Ubuntu 20.04 oder höher
  • Benutzerkonto: Ein Benutzerkonto mit Sudo- oder Root-Zugriff.

Betriebssystem aktualisieren

Aktualisieren Sie Ihr Ubuntu Betriebssystem, um sicherzustellen, dass alle vorhandenen Pakete auf dem neuesten Stand sind :

sudo apt update && sudo apt upgrade

Root- oder Sudo-Zugriff

Standardmäßig hat das mit Ubuntu erstellte Konto den sudo-Status vergeben. Angenommen, Sie müssen zusätzlichen Konten sudo/root-Zugriff gewähren. In diesem Fall müssen Sie entweder Zugriff auf das Root-Passwort haben um den su-Befehl zu verwenden oder besuchen Sie unser Tutorial zum Hinzufügen eines Benutzers zu Sudoern unter Ubuntu.

Installieren Sie Nginx

Methode 1. Installieren Sie Nginx Stable aus dem Ubuntu-Repository

Die erste Methode besteht darin, Nginx aus den Standard-Repositories von Ubuntu zu installieren, und diese Versionen haben sich als stabil und sicher erwiesen. Wenn Sie einen primären Webserver oder Reverse-Proxy ausführen müssen, wird häufig die Installation der Ubuntu-Repository-Pakete empfohlen.

Führen Sie den folgenden Befehl aus, um Nginx zu installieren.

sudo apt install nginx

Beispielausgabe:

Geben Sie "Y" ein Drücken Sie dann die "ENTER-TASTE" um mit der Installation fortzufahren.

Überprüfen Sie als Nächstes den Versionsaufbau und ob die Installation erfolgreich war.

sudo nginx -v

Beispielausgabe:

nginx version: nginx/1.18.0

Methode 2. Installieren Sie den neuesten Nginx Stable oder Mainline von Ondřej Surý PPA

Anstatt den standardmäßigen stabilen Nginx-Build aus dem Repository von Ubuntu 20.04 zu installieren, können Sie alternativ entweder Nginx Stable oder Mainline mit dem PPA von Ondřej Surý, dem PHP-Maintainer für Debian, installieren.

Installieren Sie eines der folgenden PPAs mit dem folgenden Befehl:

Installieren Sie das neueste Nginx (STABLE):

sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update

Neueste Nginx (MAINLINE) installieren:

sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update

Nachdem Sie nun das PPA installiert haben und die Repository-Liste aktualisiert haben, installieren Sie Nginx wie folgt:

sudo apt install nginx-core nginx-common nginx nginx-full

Beispielausgabe:

Geben Sie "Y" ein Drücken Sie dann die "ENTER-TASTE" um mit der Installation fortzufahren.

Überprüfen Sie als Nächstes den Versionsaufbau und ob die Installation erfolgreich war.

sudo nginx -v

Beispielausgabe (von Mainline):

nginx version: nginx/1.18.0

Überprüfen Sie nun, ob das neueste Nginx aus dem Ondřej Surý-Repository mit dem Befehl apt-cache policy installiert wurde . Beachten Sie das Tutorial-Beispiel installierte Nginx Mainline:

apt-cache policy nginx

Beispielausgabe für Nginx Mainline :

Beachten Sie, dass Sie möglicherweise aufgefordert werden, Ihre vorhandene /etc/nginx/ beizubehalten oder zu ersetzen nginx.conf Konfigurationsdatei während der Installation, wenn Sie zuvor Nginx installiert hatten. Es wird empfohlen, Ihre aktuelle Konfigurationsdatei beizubehalten, indem Sie (n) drücken . Unabhängig von der Version des Betreuers wird eine Kopie erstellt, und Sie können dies auch in Zukunft überprüfen.

Sie werden feststellen, dass in dieser Version zusätzliche Module verfügbar sein werden, insbesondere die Brotli-Unterstützung. Um brotli zu installieren , führen Sie die folgenden Schritte aus.

Öffnen Sie Ihre nginx.conf Konfigurationsdatei:

nano /etc/nginx/nginx.conf

Fügen Sie nun die zusätzlichen Zeilen zuvor im HTTP{} hinzu Abschnitt:

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
   application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
   application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
   font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
   image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

Das brotli_comp_level kann zwischen 1 (niedrigste) eingestellt werden und 11 (höchste) . Normalerweise sitzen die meisten Server in der Mitte, aber wenn Ihr Server ein Monster ist, stellen Sie ihn auf 11 und überwachen Sie die CPU-Auslastung.

Testen Sie als Nächstes, ob die Änderungen richtig funktionieren, bevor Sie sie live schalten:

sudo nginx -t

Wenn die Änderungen korrekt funktionieren, sollten Sie Folgendes sehen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Machen Sie die Änderungen jetzt live, indem Sie Ihren Server neu starten:

sudo systemctl restart nginx
sudo systemctl status nginx

Beispielausgabe:

UFW-Konfiguration

Standardmäßig ist UFW auf Ubuntu 20.04 installiert. Wenn Sie UFW verwenden oder eine klarere Ansicht zum Ausführen einer Firewall wünschen, verwenden Sie die folgenden Informationen, um UFW für Nginx zu konfigurieren.

Wenn UFW nicht installiert ist, installieren Sie die Firewall mit dem folgenden Befehl neu:

sudo apt install ufw -y

Als nächstes aktivieren Sie UFW mit dem folgenden Befehl.

sudo ufw enable

Standardmäßig werden jetzt alle eingehenden Verbindungen blockiert und alle ausgehenden zugelassen.

Finden Sie als Nächstes heraus, welche Anwendungen Sie installiert haben, indem Sie Folgendes eingeben.

sudo ufw app list

Beispielausgabe (Beachten Sie, dass auch eine umfangreiche Liste anderer Anwendungen erscheint):

 Available applications:
   Nginx Full
   Nginx HTTP
   Nginx HTTPS

Als Nächstes können Sie Nginx in HTTP (Port 80), HTTPS (Port 443) oder Full aktivieren, einschließlich aller Optionen.

HTTP (Port 80):

sudo ufw allow 'Nginx HTTP'

HTTP (Port 443):

sudo ufw allow 'Nginx HTTPS'

HTTP &HTTPS (vollständig):

sudo ufw allow 'Nginx FULL'

Im Tutorial „Nginx (Full)“ wurde aktiviert.

Beispielausgabe:

 Rules updated
 Rules updated (v6)

Bestätigen Sie mit dem folgenden Befehl, dass die Firewall-Regeln aktiv sind.

sudo ufw status

Sie werden die Regeln in der Ausgabe aufgelistet sehen.

 Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 Nginx Full (v6)          ALLOW       Anywhere (v6) 

Überprüfen Sie nach der Konfiguration von UFW, ob Sie die Nginx-Zielseite in Ihrem Internetbrowser sehen können.

http://your_server_ip

Wenn alles gut funktioniert, sollten Sie auf der folgenden Seite landen:

Nginx-Server konfigurieren

Sie müssen die IP-Adresse des Servers für die Einrichtung bereithalten. Der einfachste Weg, dies zu tun, ist wie folgt.

Server-IP-Adresse finden

Sie müssen die IP-Adresse des Servers für die Einrichtung bereithalten. Der einfachste Weg, dies zu tun, ist wie folgt.

curl -4 icanhazip.com

Beispielausgabe:

XXX.XXX.XXX.XXX IP address

Wenn ein Fehler auftritt, müssen Sie höchstwahrscheinlich das Curl-Paket auf Ihrem System installieren. Führen Sie schnell diesen Befehl aus:

sudo apt install curl -y

Site-Quellverzeichnis einrichten

Nginx Server blockiert (ähnlich wie virtuelle Hosts in Apache) können Konfigurationsdetails kapseln und mehr als eine Domain von einem einzigen Server hosten. In der Anleitung richten Sie eine Domain namens example.com ein , aber Sie sollten dies durch Ihren Domainnamen ersetzen .

Wenn Sie Nginx installieren, wird es mit einem vorinstallierten www-Verzeichnis erstellt. Den Speicherort finden Sie unter /var/www/html/ .

Erstellen Sie zuerst das Verzeichnis für example.com , wie folgt, indem Sie das Flag „-p“ verwenden, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:

sudo mkdir -p /var/www/example.com/html

Zweitens müssen Sie den Eigentümer des Verzeichnisses zuweisen.

sudo chown -R $USER:$USER /var/www/your_domain/html

Drittens weisen Sie die Berechtigungen des Verzeichnisses zu, sodass der Eigentümer die Dateien lesen, schreiben und ausführen kann, während er Gruppen und anderen nur Lese- und Ausführungsberechtigungen gewährt. Sie können den folgenden Befehl eingeben:

sudo chmod -R 755 /var/www/your_domain

Test-HTML-Seite einrichten

Erstellen Sie viertens eine Testseite, mit der Sie bestätigen, dass Ihr Nginx-Server betriebsbereit ist.

nano /var/www/your_domain/html/index.html

Innerhalb des Nano-Editors und der neuen Datei, die Sie erstellt haben. Geben Sie Folgendes ein.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

Speichern Sie die Datei STRG+O, Beenden Sie dann STRG+X .

Nginx-Serverblock erstellen

Jetzt erstellen Sie den Serverblock für Ihre Website. Wir werden wie folgt einen neuen Serverblock erstellen.

sudo nano /etc/nginx/sites-available/your_domain.conf

Sie können den folgenden Beispielcode in den Block einfügen. Dies ist nur ein nur-HTTP-Beispiel für grundlegende Tests.

server {
 listen 80;
 listen [::]:80;

 root /var/www/your_domain/html;

  index index.html index.htm index.nginx-debian.html;
  server_name your_domain www.your_domain;

 location / {
  try_files $uri $uri/ =404;
 }
}

Das Beispiel zeigt, dass Ihr Server auf zwei Servernamen wartet, "Ihre_Domäne" auf Port 80.

Sie müssen das Stammverzeichnis in den Namen/Speicherort des von Ihnen erstellten Stammverzeichnisses ändern.

Nginx-Serverblock aktivieren

Um Nginx-Serverblöcke zu aktivieren, müssen Sie die Konfigurationsdateien von „sites-available“ mit „sites-enabled“ in Ihrem Nginx-Verzeichnis verknüpfen. Dies kann mit dem Befehl ln -s wie folgt erfolgen.

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

Endgültige Konfiguration &Testlauf

Im letzten Schritt müssen Sie Ihre standardmäßige nginx.conf öffnen Datei.

sudo nano /etc/nginx/nginx.conf

Und kommentieren Sie die folgende Zeile aus.

server_names_hash_bucket_size 64;

Die Hash-Bucket-Größe des Servernamens wird geändert, da manchmal Probleme beim Hinzufügen zusätzlicher Server auftreten.

Testen Sie als Nächstes Ihr Nginx, um sicherzustellen, dass es funktioniert, bevor Sie es ordnungsgemäß neu starten.

sudo nginx -t

Die Ausgabe sollte lauten, wenn keine Fehler in der Syntax:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn Sie die folgende ok-Ausgabe haben, starten Sie den Nginx-Server neu, damit die Änderungen stattfinden.

sudo systemctl restart nginx

Öffnen Sie nun Ihren Internetbrowser und geben Sie den Domainnamen des Servers ein . Sie sollten sehen, dass Ihr Serverblock aktiv ist.

Nginx mit Let’s Encrypt SSL Free Certificate sichern

Idealerweise möchten Sie Ihr Nginx auf HTTPS mit einem SSL-Zertifikat ausführen . Verwenden Sie dazu am besten Let’s Encrypt eine kostenlose, automatisierte und offene Zertifizierungsstelle, die von der gemeinnützigen Internet Security Research Group (ISRG) betrieben wird .

Installieren Sie zuerst das certbot-Paket wie folgt:

sudo apt install python3-certbot-nginx -y

Führen Sie nach der Installation den folgenden Befehl aus, um die Erstellung Ihres Zertifikats zu starten:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Dies ist das ideale Setup, das erzwungene HTTPS-301-Umleitungen, Strict-Transport-Security-Header und OCSP-Stapling umfasst. Passen Sie einfach E-Mail und Domainnamen an Ihre Anforderungen an.

Jetzt lautet Ihre URL HTTPS://www.example.com statt HTTP://www.example.com .

Beachten Sie, wenn Sie die alte HTTP-URL verwenden , wird automatisch auf HTTPS umgeleitet .

Zugriff auf Nginx-Serverprotokolle

Nginx-Protokollverzeichnis

Standardmäßig befinden sich alle NGINX-Zugriffs-/Fehlerprotokolle, sofern Sie sie nicht geändert haben, im Protokollverzeichnis, das der folgende Befehl anzeigen kann.

Navigieren Sie zuerst zum Protokollverzeichnis und listen Sie die Dateien auf:

cd /var/log/nginx && ls -l

Sie sollten die folgenden Zugriffs- und Fehlerdateien finden:

Zugriffsprotokoll:

/var/log/nginx/access.log

Fehlerprotokoll:

/var/log/nginx/error.log

Um Protokolle in Echtzeit in Ihrem Terminal anzuzeigen, verwenden Sie den Befehl sudo tail -f /location/of/log path.

Beispiel:

sudo tail -f /var/log/nginx/access.log

Eine andere Option besteht darin, die letzten X Zeilen zu drucken. Beispielsweise wird X durch 30 ersetzt, um 30 Zeilen auszugeben, indem die -n 30 Flags hinzugefügt werden .

sudo tail -f /var/log/nginx/access.log -n 30

Dies sind nur einige Beispiele für das Lesen von Protokollen.

So konfigurieren Sie Nginx Log Rotate

Nginx installiert automatisch die Protokollrotation und konfiguriert sie auf die Standardeinstellung, die täglich rotieren soll. Sie können diese Einstellungen ändern, indem Sie wie unten gezeigt auf die Datei zugreifen.

sudo nano /etc/nginx/logrotate.d/nginx

Als nächstes sehen Sie die gleiche, wenn nicht ähnliche Dateistruktur. Hier können Sie den Inhalt ändern. Meistens können Sie ändern, wie viele Protokolle aufbewahrt werden sollen, oder von täglich auf wöchentlich wechseln. Dies sollte standardmäßig beibehalten werden, es sei denn, Sie haben spezielle Protokollanforderungen für Software wie fail2ban-Überwachung oder ähnliches.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

Die wichtigsten Einstellungen, die Sie wahrscheinlich ändern möchten, sind die folgenden:

  • Täglich – Dies kann in Wöchentlich, Monatlich geändert werden. Dies sollte täglich eingehalten werden, da sonst das Durchsuchen der Protokolldatei schwierig wird.
  • Um 14 drehen – So viele Protokolle müssen aufbewahrt und entfernt werden, also gibt es maximal 14 Protokolle, wenn Sie nur Protokolle im Wert von 7 Tagen aufbewahren möchten, ändern Sie dies auf 7.

Es wird empfohlen, keine anderen Einstellungen zu ändern, es sei denn, Sie wissen, was Sie tun.

So aktualisieren Sie Nginx

Nginx wird standardmäßig aktualisiert, wenn eine neue Version in die Repositories gelangt. Vor dem Upgrade ist es immer ratsam, Ihr Nginx-Verzeichnis oder zumindest die nginx.conf zu sichern Datei. Sie können beides mit dem folgenden Befehl tun.

Nginx.conf sichern (dringend empfohlen):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Sichern Sie Ihren gesamten Nginx-Ordner, wenn Sie möchten:

sudo cp /etc/nginx/ /etc/nginx-bkup

Führen Sie als Nächstes den Standard-Update-Befehl aus.

sudo apt update

Wenn ein Upgrade verfügbar ist, führen Sie das Upgrade aus.

sudo apt upgrade 

Möglicherweise werden Sie während eines Upgrades oder einer Installation dazu aufgefordert, aber dies vorher manuell zu tun, ist ziemlich wichtig. Bei großen Nginx-Konfigurationen mit mehreren Sites wäre eine Sicherung auf etwas wie Github oder Gitlab sogar noch vorteilhafter.


Ubuntu
  1. So installieren Sie Nextcloud mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04 LTS

  2. So installieren Sie Magento 2 mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04 LTS

  3. So installieren Sie MediaWiki mit Nginx unter Ubuntu 16.04

  4. So installieren Sie Magento mit Nginx unter Ubuntu 15.10

  5. So installieren Sie Let’s Encrypt SSL auf Ubuntu 18.04 mit Nginx

So installieren Sie Nginx mit Let’s Encrypt SSL auf Fedora 35

So installieren Sie Let’s Encrypt SSL auf Ubuntu mit Apache

So installieren Sie Let’s Encrypt SSL mit Nginx unter Ubuntu 16.04 LTS

So installieren Sie Let’s Encrypt SSL für Nginx unter Ubuntu 18.04 LTS

So installieren Sie Nginx mit Let’s Encrypt SSL unter Ubuntu 20.04 LTS

So installieren Sie Apache mit Let’s Encrypt SSL unter Ubuntu 20.04 LTS