Einführung
Nginx ist einer der beliebtesten Webserver der Welt und ist für das Hosting einiger der größten und meistbesuchten Websites im Internet verantwortlich. Es ist eine leichte Wahl, die sowohl als Webserver als auch als Reverse-Proxy verwendet werden kann.
In diesem Leitfaden werden wir besprechen, wie man Nginx auf Ihrem Ubuntu 22.04 Server installiert, die Firewall anpasst, den Nginx-Prozess verwaltet und Server-Blöcke für das Hosting mehrerer Domänen von einem einzigen Server einrichtet.
Deployen Sie Ihre Anwendungen von GitHub mit DigitalOcean App Platform. Lassen Sie DigitalOcean sich darauf konzentrieren, Ihre App zu skalieren.
Voraussetzungen
Bevor Sie mit diesem Leitfaden beginnen, sollten Sie über einen regulären, nicht-root Benutzer mit sudo-Berechtigungen auf Ihrem Server verfügen. Sie können lernen, wie man ein reguläres Benutzerkonto konfiguriert, indem Sie unserem Anleitung zum Initialisieren des Servers für Ubuntu 22.04 folgen.
Sie möchten möglicherweise auch optional einen Domainnamen registriert haben, bevor Sie die letzten Schritte dieses Tutorials abschließen. Um mehr über die Einrichtung eines Domainnamens mit DigitalOcean zu erfahren, lesen Sie bitte unsere Einführung in das DigitalOcean-DNS.
Wenn Sie über ein verfügbares Konto verfügen, melden Sie sich als Ihr nicht-root-Benutzerkonto an, um zu beginnen.
Schritt 1 – Installation von Nginx
Weil Nginx in den Standard-Repositories von Ubuntu verfügbar ist, ist es möglich, es aus diesen Repositories mithilfe des apt
-Paketierungssystems zu installieren.
Da dies unsere erste Interaktion mit dem apt
-Paketierungssystem in dieser Sitzung ist, aktualisieren wir unseren lokalen Paketindex, damit wir Zugriff auf die aktuellsten Paketlisten haben. Danach können wir nginx
installieren:
Drücken Sie Y
, wenn Sie zur Bestätigung der Installation aufgefordert werden. Wenn Sie aufgefordert werden, einen Dienst neu zu starten, drücken Sie ENTER
, um die Standardeinstellungen zu akzeptieren und fortzufahren. apt
wird Nginx und alle erforderlichen Abhängigkeiten auf Ihrem Server installieren.
Schritt 2 – Anpassen der Firewall
Bevor Sie Nginx testen, muss die Firewall-Software konfiguriert werden, um den Zugriff auf den Dienst zu ermöglichen. Nginx registriert sich bei der Installation als Dienst bei ufw
, was es einfach macht, Nginx-Zugriff zu erlauben.
Listen Sie die Anwendungs-Konfigurationen auf, die ufw
verarbeiten kann, indem Sie Folgendes eingeben:
Sie sollten eine Auflistung der Anwendungsprofile erhalten:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Wie aus der Ausgabe ersichtlich, 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 Verkehr)
- Nginx HTTP: Dieses Profil öffnet nur Port 80 (normaler, unverschlüsselter Webverkehr)
- Nginx HTTPS: Dieses Profil öffnet nur Port 443 (TLS/SSL-verschlüsselter Verkehr)
Es wird empfohlen, das restriktivste Profil zu aktivieren, das den konfigurierten Verkehr noch zulässt. Derzeit müssen wir nur den Verkehr auf Port 80 erlauben.
Sie können dies aktivieren, indem Sie Folgendes eingeben:
Sie können die Änderung überprüfen, indem Sie Folgendes eingeben:
Die Ausgabe zeigt an, welcher HTTP-Verkehr erlaubt ist:
OutputStatus: 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üfung Ihres Web-Servers
Am Ende des Installationsprozesses startet Ubuntu 22.04 Nginx. Der Webserver sollte bereits aktiv und einsatzbereit sein.
Wir können mit dem systemd
-Init-System überprüfen, ob der Dienst läuft, indem wir Folgendes eingeben:
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 2022-03-01 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 process
Wie aus dieser Ausgabe bestätigt wurde, wurde der Dienst erfolgreich gestartet. Der beste Weg, dies zu überprüfen, besteht jedoch darin, tatsächlich eine Seite von Nginx anzufordern.
Sie können auf die Standard-Nginx-Startseite zugreifen, um zu bestätigen, dass die Software ordnungsgemäß funktioniert, indem Sie zur IP-Adresse Ihres Servers navigieren. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie diese mithilfe des icanhazip.com-Tools herausfinden, das Ihnen Ihre öffentliche IP-Adresse liefert, wie sie von einem anderen Ort im Internet empfangen wurde:
Wenn Sie die IP-Adresse Ihres Servers haben, geben Sie sie in die Adressleiste Ihres Browsers ein:
http://your_server_ip
Sie sollten die Standard-Nginx-Startseite erhalten:
Wenn Sie sich auf dieser Seite befinden, läuft Ihr Server korrekt und ist bereit, verwaltet zu werden.
Schritt 4 – Verwaltung des Nginx-Prozesses
Jetzt, da Ihr Webserver läuft, lassen Sie uns einige grundlegende Verwaltungsbefehle überprüfen.
Um Ihren Webserver zu stoppen, geben Sie Folgendes ein:
Um den Webserver zu starten, wenn er gestoppt ist, geben Sie Folgendes ein:
Um den Dienst zu stoppen und dann wieder zu starten, geben Sie Folgendes ein:
Wenn Sie nur Konfigurationsänderungen vornehmen, kann Nginx oft neu geladen werden, ohne Verbindungen zu trennen. Geben Sie dazu ein:
Standardmäßig ist Nginx so konfiguriert, dass es automatisch startet, wenn der Server hochfährt. Wenn dies nicht gewünscht ist, können Sie dieses Verhalten deaktivieren, indem Sie Folgendes eingeben:
Um den Dienst wieder so einzurichten, dass er beim Booten startet, können Sie Folgendes eingeben:
Sie haben nun grundlegende Verwaltungsbefehle gelernt und sollten bereit sein, die Website so zu konfigurieren, dass sie mehr als eine Domain hostet.
Schritt 5 – Einrichten von Server-Blöcken (Empfohlen)
Bei Verwendung des Nginx-Webservers können Server-Blöcke (ähnlich wie virtuelle Hosts in Apache) verwendet werden, um Konfigurationsdetails zu kapseln und mehr als eine Domain von einem einzigen Server zu hosten. Wir werden eine Domain namens deine_domain einrichten, aber Sie sollten dies durch Ihren eigenen Domainnamen ersetzen.
Nginx auf Ubuntu 22.04 hat standardmäßig einen Server-Block aktiviert, der so konfiguriert ist, dass er Dokumente aus einem Verzeichnis unter /var/www/html
serviert. Dies funktioniert gut für eine einzelne Website, kann jedoch unhandlich werden, wenn mehrere Websites gehostet werden. Anstatt /var/www/html
zu ändern, erstellen wir eine Verzeichnisstruktur innerhalb von /var/www
für unsere deine_domain-Website und lassen /var/www/html
als Standardverzeichnis bestehen, das bedient wird, wenn eine Client-Anfrage keiner anderen Website entspricht.
Erstellen Sie das Verzeichnis für deine_domain wie folgt, unter Verwendung der -p
-Option, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:
Als nächstes weisen Sie das Verzeichnis mit der Umgebungsvariable $USER
zu:
Die Berechtigungen Ihrer Web-Roots sollten korrekt sein, wenn Sie Ihren umask
-Wert nicht geändert haben, der die Standarddateiberechtigungen festlegt. Um sicherzustellen, dass Ihre Berechtigungen korrekt sind und dem Besitzer das Lesen, Schreiben und Ausführen der Dateien ermöglichen, während nur Lese- und Ausführungsberechtigungen für Gruppen und andere gewährt werden, können Sie den folgenden Befehl eingeben:
Als Nächstes erstellen Sie eine Beispieldatei index.html
mit nano
oder Ihrem bevorzugten Editor:
Fügen Sie folgendes Beispiel-HTML ein:
Speichern und schließen Sie die Datei durch Drücken von Strg + X
zum Beenden und dann, wenn zur Speicherung aufgefordert wird, Y
und dann Eingabetaste
.
Um sicherzustellen, dass Nginx diesen Inhalt bereitstellt, ist es notwendig, einen Serverblock mit den richtigen Direktiven zu erstellen. Anstatt die Standardkonfigurationsdatei direkt zu ändern, erstellen wir eine neue unter /etc/nginx/sites-available/deine_domain
:
Fügen Sie den folgenden Konfigurationsblock ein, der dem Standard ähnelt, aber für unser neues Verzeichnis und unsere Domain aktualisiert ist:
Bemerkenswert ist, dass wir die root
-Konfiguration auf unser neues Verzeichnis und den server_name
auf unseren Domainnamen aktualisiert haben.
Als Nächstes aktivieren wir die Datei, indem wir einen Link von ihr zum Verzeichnis sites-enabled
erstellen, das Nginx beim Start liest:
Hinweis: Nginx verwendet eine gängige Praxis namens symbolische Links oder Symlinks, um zu verfolgen, welche Ihrer Serverblöcke aktiviert sind. Das Erstellen eines Symlinks ist wie das Erstellen einer Verknüpfung auf der Festplatte, sodass Sie später die Verknüpfung aus dem Verzeichnis sites-enabled
löschen könnten, während der Serverblock in sites-available
erhalten bleibt, wenn Sie ihn aktivieren möchten.
Zwei Serverblöcke sind nun aktiviert und konfiguriert, um auf Anfragen basierend auf ihren listen
– und server_name
-Direktiven zu antworten (Sie können mehr darüber lesen, wie Nginx diese Direktiven verarbeitet hier):
deine_domain
: Wird auf Anfragen fürdeine_domain
undwww.deine_domain
antworten.default
: Wird auf alle Anfragen auf Port 80 antworten, die nicht zu den anderen beiden Blöcken passen.
Um ein mögliches Speicherproblem mit Hash-Buckets zu vermeiden, das durch das Hinzufügen zusätzlicher Servernamen entstehen kann, ist es notwendig, einen einzigen Wert in der Datei /etc/nginx/nginx.conf
anzupassen. Öffnen Sie die Datei:
Finden Sie die Direktive server_names_hash_bucket_size
und entfernen Sie das #
-Symbol, um die Zeile zu kommentieren. Wenn Sie nano verwenden, können Sie schnell nach Wörtern in der Datei suchen, indem Sie STRG
und w
drücken.
Hinweis: Das Auskommentieren von Codezeilen – normalerweise durch Einfügen von #
am Anfang einer Zeile – ist eine weitere Möglichkeit, sie zu deaktivieren, ohne sie tatsächlich löschen zu müssen. Viele Konfigurationsdateien werden mit mehreren auskommentierten Optionen ausgeliefert, damit sie aktiviert oder deaktiviert werden können, indem sie zwischen aktivem Code und Dokumentation umgeschaltet werden.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Speichern Sie die Datei und schließen Sie sie, wenn Sie fertig sind.
Als nächstes überprüfen Sie, ob es keine Syntaxfehler in Ihren Nginx-Dateien gibt:
Wenn es keine Probleme gibt, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:
Nginx sollte jetzt Ihren Domainnamen bedienen. Sie können dies testen, indem Sie zu http://your_domain
navigieren, wo Sie etwas ähnliches wie folgt sehen sollten:
Schritt 6 – Vertraut machen mit wichtigen Nginx-Dateien und -Verzeichnissen
Jetzt, da Sie wissen, wie Sie den Nginx-Dienst selbst verwalten können, sollten Sie sich ein paar Minuten Zeit nehmen, um sich mit einigen wichtigen Verzeichnissen und Dateien vertraut zu machen.
Inhalt
/var/www/html
: Der tatsächliche Webinhalt, der standardmäßig nur aus der Standard-Nginx-Seite besteht, die Sie zuvor gesehen haben, wird aus dem Verzeichnis/var/www/html
bereitgestellt. Dies kann durch Ändern von Nginx-Konfigurationsdateien geändert werden.
Serverkonfiguration
/etc/nginx
: Das Nginx-Konfigurationsverzeichnis. Alle Nginx-Konfigurationsdateien befinden sich hier./etc/nginx/nginx.conf
: Die Haupt-Nginx-Konfigurationsdatei. Diese kann geändert werden, um Änderungen an der globalen Nginx-Konfiguration vorzunehmen./etc/nginx/sites-available/
: Das Verzeichnis, in dem pro-Website-Serverblöcke gespeichert werden können. Nginx verwendet die Konfigurationsdateien in diesem Verzeichnis nicht, es sei denn, sie sind mit dem Verzeichnissites-enabled
verknüpft. Typischerweise wird die gesamte Serverblockkonfiguration in diesem Verzeichnis durchgeführt und dann durch Verknüpfen mit dem anderen Verzeichnis aktiviert./etc/nginx/sites-enabled/
: Das Verzeichnis, in dem aktivierte pro-Website-Serverblöcke gespeichert sind. Diese werden typischerweise durch Verknüpfen mit Konfigurationsdateien im Verzeichnissites-available
erstellt./etc/nginx/snippets
: Dieses Verzeichnis enthält Konfigurationsfragmente, die an anderer Stelle in der Nginx-Konfiguration eingefügt werden können. Potenziell wiederholbare Konfigurationssegmente eignen sich gut für die Umstrukturierung in Snippets.
Serverprotokolle
/var/log/nginx/access.log
: Jede Anfrage an Ihren Webserver wird in dieser Protokolldatei aufgezeichnet, es sei denn, Nginx ist anders konfiguriert./var/log/nginx/error.log
: Alle Nginx-Fehler werden in diesem Protokoll erfasst.
Abschluss
Jetzt, da Sie Ihren Webserver installiert haben, haben Sie viele Möglichkeiten für die Art des Inhalts, den Sie bereitstellen möchten, und die Technologien, die Sie verwenden möchten, um eine umfassendere Erfahrung zu schaffen.
Wenn Sie einen umfassenderen Anwendungsstapel erstellen möchten, schauen Sie sich den Artikel So installieren Sie Linux, Nginx, MySQL, PHP (LEMP-Stack) auf Ubuntu 22.04 an.
Um HTTPS für Ihren Domainnamen mit einem kostenlosen SSL-Zertifikat von Let’s Encrypt einzurichten, sollten Sie weitergehen zu So sichern Sie Nginx mit Let’s Encrypt auf Ubuntu 22.04 ab.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-22-04