Einführung
Nginx ist einer der weltweit beliebtesten Webserver und hostet einige der größten und meistbesuchten Websites im Internet. Er ist eine ressourcenschonende Lösung, die sowohl als Webserver als auch als Reverse-Proxy eingesetzt werden kann.
In diesem Leitfaden behandeln wir die Installation von Nginx auf einem Ubuntu 20.04-Server, die Einrichtung einer Firewall, die Verwaltung des Nginx-Prozesses und die Einrichtung von Serverblöcken, um mehr als eine Domain von einem einzigen Server aus zu hosten.
Voraussetzungen
- Bevor Sie mit dieser Anleitung beginnen, müssen Sie einen regulären Benutzer ohne Root-Rechte mit sudo-Berechtigungen auf Ihrem Server konfiguriert haben.
- Um einen Ubuntu-Server zu kaufen Klicken Mach es.
Schritt 1 – Nginx installieren
Da Nginx in den Standard-Ubuntu-Repositories verfügbar ist, kann es mithilfe des apt-Paketverwaltungssystems aus diesen Repositories installiert werden.
Da dies unsere erste Interaktion mit dem apt-Paketverwaltungssystem in dieser Sitzung ist, aktualisieren wir unser lokales Paketverzeichnis, um Zugriff auf die neuesten Paketlisten zu erhalten. Danach können wir nginx installieren:
sudo apt update
sudo apt install nginxNach Bestätigung des Vorgangs installiert apt Nginx und alle erforderlichen Abhängigkeiten auf Ihrem Server.
Schritt 2 – Firewall konfigurieren
Vor dem Testen von Nginx muss die Firewall-Software so konfiguriert werden, dass der Zugriff auf den Dienst erlaubt ist. Nach der Installation registriert sich Nginx als Dienst bei ufw, wodurch der Zugriff auf Nginx einfach freigegeben werden kann.
Geben Sie Folgendes ein, um die Anwendungskonfigurationen aufzulisten, mit denen ufw arbeiten kann:
sudo ufw app list
Sie sollten eine Liste der Anwendungsprofile erhalten:
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSHWie aus der Ausgabe hervorgeht, gibt es drei Profile für Nginx:
- Nginx Full: Dieses Profil öffnet sowohl Port 80 (normaler, unverschlüsselter Webverkehr) als auch Port 443 (TLS/SSL-verschlüsselter Datenverkehr).
- Nginx HTTP: Dieses Profil öffnet nur Port 80 (normaler, unverschlüsselter Webverkehr).
- Nginx HTTPS: Dieses Profil öffnet nur Port 443 (TLS/SSL-verschlüsselter Datenverkehr).
Es wird empfohlen, das restriktivste Profil zu aktivieren, das den von Ihnen konfigurierten Datenverkehr noch zulässt. Fürs Erste genügt es, den Datenverkehr auf Port 80 zuzulassen.
Sie können dies aktivieren, indem Sie Folgendes eingeben:
sudo ufw allow 'Nginx HTTP'
Sie können diese Änderung bestätigen, indem Sie Folgendes eingeben:
sudo ufw status
Die Ausgabe zeigt, welcher HTTP-Verkehr zugelassen ist:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)Schritt 3 – Überprüfen Sie Ihren Webserver
Am Ende des Installationsvorgangs startet Ubuntu 20.04 Nginx. Der Webserver sollte bereits laufen.
Wir können dies tun, indem wir Folgendes eingeben:
systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker processWie dieser Fall bestätigt, ist der Dienst erfolgreich gestartet. Am besten lässt sich dies jedoch testen, indem man tatsächlich eine Seite von Nginx anfordert.
Sie können die Standard-Startseite von Nginx aufrufen, indem Sie die IP-Adresse Ihres Servers verwenden, um zu überprüfen, ob die Software ordnungsgemäß funktioniert. Falls Sie die IP-Adresse Ihres Servers nicht kennen, können Sie diese mit dem Tool icanhazip.com ermitteln. Dieses Tool liefert Ihnen Ihre öffentliche IP-Adresse, so wie sie von einem anderen Ort im Internet empfangen würde.
curl -4 icanhazip.com
Sobald Sie die IP-Adresse Ihres Servers haben, geben Sie diese in die Adresszeile Ihres Browsers ein:
http://your_server_ipSie sollten die standardmäßige Nginx-Startseite sehen:
Wenn Sie sich auf dieser Seite befinden, funktioniert Ihr Server ordnungsgemäß und ist bereit zur Verwaltung.
Schritt 4 – Den Nginx-Prozess verwalten
Nachdem Sie Ihren Webserver eingerichtet haben, sehen wir uns nun einige grundlegende administrative Befehle an.
Um Ihren Webserver zu stoppen, geben Sie Folgendes ein:
sudo systemctl stop nginx
Um den Webserver neu zu starten, falls er stoppt, geben Sie Folgendes ein:
sudo systemctl start nginx
Um den Dienst zu stoppen und anschließend neu zu starten, geben Sie Folgendes ein:
sudo systemctl restart nginx
Wenn Sie lediglich Konfigurationsänderungen vornehmen, kann Nginx oft neu geladen werden, ohne dass die Verbindungen unterbrochen werden. Geben Sie dazu Folgendes ein:
sudo systemctl reload nginx
Standardmäßig ist Nginx so konfiguriert, dass es beim Serverstart automatisch startet. Falls Sie dies nicht wünschen, können Sie dieses Verhalten deaktivieren, indem Sie Folgendes eingeben:
sudo systemctl disable nginx
Um den Dienst wieder so zu aktivieren, dass er beim Systemstart automatisch startet, können Sie Folgendes eingeben:
sudo systemctl enable nginx
Sie haben nun die grundlegenden administrativen Befehle kennengelernt und sollten in der Lage sein, Ihre Website so zu konfigurieren, dass sie mehr als eine Domain hosten kann.
Schritt 5 – Serverblöcke einrichten (empfohlen)
Bei Verwendung des Nginx-Webservers können Serverblöcke (ähnlich den virtuellen Hosts in Apache) eingesetzt werden, um Konfigurationsdetails zu kapseln und mehrere Domains auf einem einzigen Server zu hosten. Wir richten eine Domain namens „your_domain“ ein, die Sie jedoch durch Ihren eigenen Domainnamen ersetzen sollten.
Nginx in Ubuntu 20.04 verfügt standardmäßig über einen Serverblock, der so konfiguriert ist, dass Dokumente außerhalb eines Verzeichnisses in /var/www/html ausgeliefert werden. Dies funktioniert zwar für eine einzelne Website problemlos, kann aber bei mehreren Websites umständlich werden. Anstatt /var/www/html zu ändern, erstellen wir eine Verzeichnisstruktur in /var/www für unsere Website mit Ihrer Domain und belassen /var/www/html als Standardverzeichnis für die Auslieferung, falls dieses nicht der Clientanfrage entspricht.
Erstellen Sie ein Verzeichnis für Ihre_Domain wie folgt und verwenden Sie den Parameter -p, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:
sudo mkdir -p /var/www/your_domain/html
Weisen Sie anschließend die Besitzrechte für das Verzeichnis mithilfe der Umgebungsvariablen $USER zu:
sudo chown -R $USER:$USER /var/www/your_domain/html
Wenn Sie den Wert Ihrer umask-Datei, die die Standarddateiberechtigungen festlegt, nicht geändert haben, sollten die Berechtigungen Ihres Web-Root-Verzeichnisses korrekt sein. Um sicherzustellen, dass Ihre Berechtigungen korrekt sind und dem Eigentümer das Lesen, Schreiben und Ausführen von Dateien ermöglichen, während Gruppen und anderen Benutzern nur Lese- und Ausführungsberechtigungen erteilt werden, können Sie folgenden Befehl eingeben:
sudo chmod -R 755 /var/www/your_domain
Erstellen Sie als Nächstes eine Beispielseite index.html mit nano oder Ihrem bevorzugten Editor:
sudo nano /var/www/your_domain/html/index.html
Fügen Sie darin das folgende HTML-Beispiel ein:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>Speichern und schließen Sie die Datei, indem Sie Strg+X zum Beenden drücken und anschließend Y und dann die Eingabetaste, wenn Sie zum Speichern aufgefordert werden.
Damit Nginx diese Inhalte ausliefern kann, müssen Sie einen Serverblock mit den korrekten Anweisungen erstellen. Anstatt die Standardkonfigurationsdatei direkt zu ändern, erstellen wir eine neue Datei in /etc/nginx/sites-available/your_domain:
sudo nano /etc/nginx/sites-available/your_domain
Fügen Sie den folgenden Konfigurationsblock ein, der dem Standardblock ähnelt, jedoch für unser neues Verzeichnis und unseren neuen Domänennamen aktualisiert wurde:
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;
}
}Beachten Sie, dass wir die Root-Konfiguration auf unser neues Verzeichnis und den Servernamen auf unseren Domänennamen aktualisiert haben.
Als Nächstes aktivieren wir die Datei, indem wir einen Link von ihr zum Verzeichnis sites-enabled erstellen, aus dem Nginx beim Start liest:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Nun sind zwei Serverblöcke aktiviert und so konfiguriert, dass sie auf Anfragen basierend auf den Direktiven listen und server_name reagieren (mehr darüber, wie Nginx diese Direktiven verarbeitet, erfahren Sie hier):
- Ihre_Domain: Es reagiert auf Anfragen für Ihre_Domain und www.Ihre_Domain.
- Standard: Es reagiert auf jede Anfrage an Port 80, die nicht mit den anderen beiden Blöcken übereinstimmt.
Um mögliche Speicherprobleme mit dem Hash-Bucket zu vermeiden, die durch das Hinzufügen weiterer Servernamen entstehen können, muss in der Datei `/etc/nginx/nginx.conf` ein einzelner Wert festgelegt werden. Öffnen Sie die Datei:
sudo nano /etc/nginx/nginx.conf
Suchen Sie den Befehl `server_names_hash_bucket_size` und entfernen Sie das Symbol `#`, um die Zeile zu aktivieren. Wenn Sie nano verwenden, können Sie mit Strg + W schnell nach Wörtern in der Datei suchen.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Als Nächstes sollten Sie prüfen, ob Ihre Nginx-Dateien Syntaxfehler enthalten:
sudo nginx -t
Wenn keine Probleme auftreten, starten Sie Nginx neu, damit Ihre Änderungen wirksam werden:
sudo systemctl restart nginx
Nginx sollte nun Ihre Domain bedienen. Sie können dies testen, indem Sie http://your_domain aufrufen. Dort sollte etwa Folgendes angezeigt werden:
Schritt 6 – Machen Sie sich mit wichtigen Nginx-Dateien und -Verzeichnissen vertraut
Nachdem Sie nun wissen, wie Sie den Nginx-Dienst selbst verwalten, sollten Sie sich ein paar Minuten Zeit nehmen, um sich mit einigen wichtigen Verzeichnissen und Dateien vertraut zu machen.
Inhalt
- /var/www/html: Der eigentliche Webinhalt, der standardmäßig nur aus der zuvor angezeigten Nginx-Standardseite besteht, wird außerhalb des Verzeichnisses `/var/www/html` ausgeliefert. Dies kann durch Bearbeiten der Nginx-Konfigurationsdateien geändert werden.
Serverkonfiguration
- /etc/nginx: Nginx-Konfigurationsverzeichnis. Alle Nginx-Konfigurationsdateien befinden sich hier.
- /etc/nginx/nginx.conf: Die Hauptkonfigurationsdatei von Nginx. Diese kann bearbeitet werden, um Änderungen an der globalen Nginx-Konfiguration vorzunehmen.
- /etc/nginx/sites-available/: Ein Verzeichnis, in dem Serverblöcke für jede Website gespeichert werden können. Nginx verwendet Konfigurationsdateien in diesem Verzeichnis nur dann, wenn sie mit dem Verzeichnis „sites-enabled“ verknüpft sind. Normalerweise erfolgt die gesamte Serverblock-Konfiguration in diesem Verzeichnis und wird anschließend durch Verknüpfung mit einem anderen Verzeichnis aktiviert.
- /etc/nginx/sites-enabled/: Das Verzeichnis, in dem die aktiven Serverblöcke für jede Website gespeichert sind. Typischerweise werden diese durch Verlinkung mit den Konfigurationsdateien im bestehenden Website-Verzeichnis erstellt.
- /etc/nginx/snippets: Dieses Verzeichnis enthält Konfigurationsfragmente, die an anderer Stelle in der Nginx-Konfiguration eingebunden werden können. Potenziell wiederverwendbare Konfigurationsabschnitte eignen sich gut für die Aufteilung in Fragmente.
Serverberichte
- /var/log/nginx/access.log: Jede Anfrage an Ihren Webserver wird in dieser Protokolldatei protokolliert, sofern Nginx nicht anders konfiguriert ist.
- /var/log/nginx/error.log: In diesem Protokoll werden alle Nginx-Fehler aufgezeichnet.
Ergebnis
Nachdem Ihr Webserver nun installiert ist, stehen Ihnen viele Möglichkeiten hinsichtlich der Art der Inhalte und Technologien zur Verfügung, mit denen Sie ein ansprechenderes Nutzererlebnis schaffen können.











