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 entweder als Webserver oder Reverse-Proxy verwendet werden kann.
In diesem Leitfaden erfahren Sie, wie Sie Nginx auf Ihrem Rocky Linux 9 Server installieren, die Firewall anpassen, den Nginx-Prozess verwalten und Serverblöcke einrichten, um mehrere Domains von einem einzigen Server aus zu hosten.
Voraussetzungen
Bevor Sie mit diesem Leitfaden beginnen, sollten Sie einen regulären, nicht-root Benutzer mit sudo-Berechtigungen auf Ihrem Server konfiguriert haben. Sie können lernen, wie Sie ein reguläres Benutzerkonto einrichten, indem Sie unserem Anleitung zum Einrichten des Servers für Rocky Linux 9 folgen.
Sie möchten außerdem optional einen Domainnamen registriert haben, bevor Sie die letzten Schritte dieses Tutorials abschließen. Um mehr über die Einrichtung eines Domainnamens bei DigitalOcean zu erfahren, lesen Sie bitte unsere Einführung in DigitalOcean DNS.
Wenn Sie über ein verfügbares Konto verfügen, melden Sie sich als Ihr nicht-root Benutzer an, um zu beginnen.
Schritt 1 – Installation von Nginx
Weil Nginx in den Standard-Repositories von Rocky verfügbar ist, können Sie es mit einem einzigen Befehl installieren, indem Sie den Paketmanager dnf
verwenden.
Installieren Sie das Paket nginx
mit dnf install
:
- sudo dnf install nginx
Wenn Sie dazu aufgefordert werden, geben Sie y
ein, um zu bestätigen, dass Sie nginx
installieren möchten. Danach wird dnf
Nginx und alle erforderlichen Abhängigkeiten auf Ihrem Server installieren.
Nach Abschluss der Installation führen Sie die folgenden Befehle aus, um den Webserver zu aktivieren und zu starten:
- sudo systemctl enable nginx
- sudo systemctl start nginx
Dadurch wird Nginx automatisch neu gestartet, wenn Ihr Server neu startet. Ihr neuer Webserver sollte jetzt betriebsbereit sein, aber bevor Sie ihn testen, müssen Sie wahrscheinlich eine Änderung an Ihrer Firewall-Konfiguration vornehmen.
Schritt 2 – Anpassen der Firewall
Wenn Sie die Firewall firewalld
im Rahmen des Initialserver-Einrichtungsleitfadens für Rocky Linux 9 aktiviert haben, müssen Sie die Firewall-Einstellungen anpassen, um externe Verbindungen auf Ihrem Nginx-Webserver zuzulassen, der standardmäßig auf Port 80
läuft.
Führen Sie den folgenden Befehl aus, um dauerhaft HTTP-Verbindungen auf Port 80
zu aktivieren:
- sudo firewall-cmd --permanent --add-service=http
Um zu überprüfen, ob der http
-Firewalldienst korrekt hinzugefügt wurde, können Sie Folgendes ausführen:
- sudo firewall-cmd --permanent --list-all
Sie werden eine Ausgabe wie diese sehen:
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Um die Änderungen anzuwenden, müssen Sie den Firewalldienst neu laden:
- sudo firewall-cmd --reload
Ihr Webserver sollte jetzt für externe Besucher erreichbar sein.
Schritt 3 – Überprüfen Ihres Web Servers
Zu diesem Zeitpunkt sollte Ihr Webserver betriebsbereit sein.
Sie können den Befehl systemctl status
verwenden, um sicherzustellen, dass der Dienst läuft:
- systemctl status nginx
Output● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 18387 (nginx)
Tasks: 3 (limit: 10938)
Memory: 2.8M
CPU: 43ms
CGroup: /system.slice/nginx.service
├─18387 "nginx: master process /usr/sbin/nginx"
├─18388 "nginx: worker process"
└─18389 "nginx: worker process"
Wie durch diese Ausgabe bestätigt wurde, wurde der Dienst erfolgreich gestartet. Die beste Möglichkeit, dies zu überprüfen, ist jedoch, tatsächlich eine Seite von Nginx anzufordern.
Sie können auf die Standard-Nginx-Startseite zugreifen, um zu bestätigen, dass die Software ordnungsgemäß läuft, indem Sie die IP-Adresse Ihres Servers aufrufen. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie sie mithilfe des Tools icanhazip.com finden, das Ihnen Ihre öffentliche IP-Adresse liefert, wie sie von einem anderen Ort im Internet empfangen wurde:
- curl -4 icanhazip.com
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 diese Seite sehen, läuft Ihr Server ordnungsgemäß und ist bereit, verwaltet zu werden.
Schritt 4 – Verwaltung des Nginx-Prozesses
Nun, da Ihr Webserver aktiv ist, werfen wir einen Blick auf einige Service-Verwaltungsbefehle.
Um den Webserver zu stoppen, verwenden Sie systemctl stop
:
- sudo systemctl stop nginx
Um den Webserver zu starten, wenn er gestoppt ist, verwenden Sie systemctl start
:
- sudo systemctl start nginx
Um den Dienst zu stoppen und dann neu zu starten, verwenden Sie systemctl restart
:
- sudo systemctl restart nginx
Wenn Sie nur Konfigurationsänderungen vornehmen, kann Nginx oft neu geladen werden, ohne Verbindungen zu unterbrechen. Verwenden Sie dazu systemctl reload
:
- sudo systemctl reload nginx
Früher in diesem Tutorial haben Sie Nginx so konfiguriert, dass es automatisch startet, wenn der Server hochgefahren wird. Sie können dieses Verhalten durch Verwenden von systemctl disable
deaktivieren:
- sudo systemctl disable nginx
Um den Dienst wieder zu aktivieren, sodass er beim Start hochfährt, geben Sie ein:
- sudo systemctl enable nginx
Schritt 5 – Vertraut werden mit wichtigen Nginx-Dateien und Verzeichnissen
Jetzt, da Sie wissen, wie Sie den Nginx-Dienst verwalten, nehmen Sie sich ein paar Minuten Zeit, um sich mit einigen wichtigen Verzeichnissen und Dateien vertraut zu machen.
Inhalt
/usr/share/nginx/html
: Der tatsächliche Webinhalt, der standardmäßig nur aus der Standard-Nginx-Seite besteht, die Sie zuvor gesehen haben, wird aus dem Verzeichnis/usr/share/nginx/html
bereitgestellt. Dies kann durch Ändern der 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/conf.d/
: Dieses Verzeichnis enthält Serverblock-Konfigurationsdateien, in denen Sie die Websites definieren können, die innerhalb von Nginx gehostet werden. Ein typischer Ansatz besteht darin, jede Website in einer separaten Datei zu haben, die nach dem Domainnamen der Website benannt ist, z. B.your_domain.conf
.
Serverprotokolle
/var/log/nginx/access.log
: Jede Anfrage an Ihren Webserver wird in dieser Protokolldatei aufgezeichnet, es sei denn, Nginx ist so konfiguriert, dass dies nicht der Fall ist./var/log/nginx/error.log
: Alle Nginx-Fehler werden in diesem Protokoll aufgezeichnet.
Sie sollten nun bereit sein, die Website für eine oder mehrere Domänen zu konfigurieren.
Schritt 6 – Einrichten von Serverblöcken (optional)
Bei Verwendung des Nginx-Webservers können Serverblöcke (ähnlich wie virtuelle Hosts in Apache) verwendet werden, um Konfigurationsdetails zu organisieren und mehr als eine Domäne von einem einzigen Server zu hosten. Auf Rocky Linux 9 werden Serverblöcke in .conf
-Dateien definiert, die sich unter /etc/nginx/conf.d
befinden. Wir werden eine Domäne namens deine_domain
einrichten, aber du solltest dies durch deinen eigenen Domainnamen ersetzen.
Standardmäßig ist Nginx auf Rocky Linux 9 so konfiguriert, dass es Dokumente aus einem Verzeichnis unter /usr/share/nginx/html
serviert. Dies funktioniert gut für eine einzelne Seite, kann aber unübersichtlich werden, wenn du mehrere Sites hostest. Anstatt /usr/share/nginx/html
zu ändern, erstellst du eine Verzeichnisstruktur innerhalb von /var/www
für die Website deine_domain, während /usr/share/nginx/html
als Standardverzeichnis bleibt, das bedient wird, wenn eine Clientanfrage keiner anderen Site entspricht.
Erstelle das Verzeichnis für deine_domain wie folgt, wobei die Option -p
verwendet wird, um gegebenenfalls erforderliche übergeordnete Verzeichnisse zu erstellen:
- sudo mkdir -p /var/www/your_domain/html
Als nächstes weisen Sie das Verzeichnis mit der Umgebungsvariable $USER
zu, die auf Ihren aktuellen Systembenutzer verweisen sollte:
- sudo chown -R $USER:$USER /var/www/your_domain/html
Jetzt erstellen Sie eine Beispielseite index.html
, um die Serverblockkonfiguration zu testen. Der Standard-Texteditor, der mit Rocky Linux 9 geliefert wird, ist vi
. vi
ist ein extrem leistungsstarker Texteditor, kann jedoch für Benutzer, die keine Erfahrung damit haben, etwas undurchsichtig sein. Möglicherweise möchten Sie einen benutzerfreundlicheren Editor wie nano
installieren, um die Bearbeitung von Konfigurationsdateien auf Ihrem Rocky Linux 9-Server zu erleichtern:
- sudo dnf install nano
Erstellen Sie als nächstes eine Beispielseite index.html
mit nano
oder Ihrem bevorzugten Editor:
- nano /var/www/your_domain/html/index.html
Fügen Sie darin folgendes Beispiels-HTML ein:
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Wenn Sie nano
verwenden, können Sie speichern und beenden, indem Sie CTRL + X
drücken, dann wenn Sie dazu aufgefordert werden, Y
und dann Enter eingeben.
Damit Nginx diesen Inhalt bereitstellen kann, müssen Sie einen Serverblock mit Anweisungen erstellen, die auf Ihr benutzerdefiniertes Webstammverzeichnis zeigen. Erstellen Sie einen neuen Serverblock unter /etc/nginx/conf.d/your_domain.conf
:
- sudo nano /etc/nginx/conf.d/your_domain.conf
Fügen Sie den folgenden Konfigurationsblock ein:
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 server_name
auf unseren Domainnamen aktualisiert haben. Speichern und schließen Sie die Datei.
Zwei Serverblöcke sind jetzt aktiviert und konfiguriert, um auf Anfragen basierend auf ihren listen
und server_name
Anweisungen zu antworten (mehr darüber, wie Nginx diese Anweisungen verarbeitet, können Sie hier lesen):
Ihre_Domain
: Wird auf Anfragen fürIhre_Domain
undwww.Ihre_Domain
antworten.standard
: Wird auf alle Anfragen auf Port 80 antworten, die nicht den anderen beiden Blöcken entsprechen.
Als nächstes testen Sie, um sicherzustellen, dass es keine Syntaxfehler in Ihren Nginx-Dateien gibt, mit nginx -t
:
- sudo nginx -t
Wenn es keine Probleme gibt, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:
- sudo systemctl restart nginx
Bevor Sie die Änderungen aus Ihrem Browser testen können, müssen Sie die Sicherheitskontexte von SELinux Ihres Servers aktualisieren, damit Nginx Inhalte aus dem Verzeichnis /var/www/Ihre_Domain
bereitstellen darf.
Dieses chcon
-Kontextupdate ermöglicht es Ihrem benutzerdefinierten Dokumentstamm, als HTTP-Inhalt bereitgestellt zu werden:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Nginx sollte jetzt Ihren Domainnamen bedienen. Sie können dies testen, indem Sie zu http://Ihre_Domain
navigieren, wo Sie etwas Ähnliches wie dies sehen sollten:
Fazit
Nun, da Sie Ihren Webserver installiert haben, haben Sie viele Optionen für den Typ des Inhalts, den Sie bereitstellen möchten, und die Technologien, die Sie verwenden möchten, um eine reichhaltigere Erfahrung zu schaffen.
Um HTTPS für Ihren Domainnamen mit einem kostenlosen SSL-Zertifikat mithilfe von Let’s Encrypt einzurichten, sollten Sie zu Wie man Nginx mit Let’s Encrypt auf Rocky Linux 9 absichert weitergehen.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9