Nginx ist einer der beliebtesten Webserver der Welt und Host einiger der größten und beliebtesten Websites im Internet. Nginx ist in den meisten Fällen ressourcenschonender als Apache und kann als Webserver oder Reverse-Proxy verwendet werden.
Dieser Leitfaden zeigt Ihnen, wie Sie Nginx auf einem CentOS-8-Server installieren.
Um diesem Leitfaden zu folgen, benötigen Sie Zugriff auf einen CentOS-8-Server als Benutzer ohne Rootberechtigung mit Sudo-Rechten, und eine auf Ihrem Server installierte aktive Firewall. Um dies einzurichten, können Sie unserem Leitfaden zur Ersteinrichtung des Servers für CentOS 8 folgen.
Um Nginx zu installieren, verwenden Sie den Paketmanager dnf
, den neuen Standard-Paketmanager auf CentOS 8.
Installieren Sie das Nginx
Paket mit:
- sudo dnf install nginx
Geben Sie bei Nachfrage 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.
Wenn die Installation abgeschlossen ist, führen Sie die folgenden Befehle aus, um den Server zu aktivieren und zu starten:
- sudo systemctl enable nginx
- sudo systemctl start nginx
Dadurch wird Nginx beim Boot des Systems gestartet.
Wenn Sie die Firewall firewalld
gemäß unserem Leitfaden zur Ersteinrichtung des Servers für CentOS 8 aktiviert haben, müssen Sie die Firewalleinstellungen anpassen, um externe Verbindungen auf Ihrem Nginx Webserver zu ermöglichen, 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 verifizieren, dass der http
Firewall-Service korrekt hinzugefügt wurde, können Sie Folgendes ausführen:
- sudo firewall-cmd --permanent --list-all
Die Ausgabe sieht dann so aus:
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 Firewall-Service neu laden:
- sudo firewall-cmd --reload
Nun ist Ihr Nginx Server komplett installiert und bereit für den Zugriff von externen Besuchern.
Sie können nun testen, ob Ihr Nginx Webserver installiert ist und läuft, indem Sie auf die öffentliche IP-Adresse oder den Domänennamen Ihres Servers von Ihrem Webbrowser aus zugreifen.
Anmerkung: Falls Sie DigitalOcean als DNS-Hosting-Anbieter verwenden, konsultieren Sie unsere Produktdokumente für detaillierte Anweisungen, wie Sie einen neuen Domänennamen einrichten und diesen ihrem Server zuweisen.
Wenn kein Domänenname auf den Server verweist und Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, können Sie diese mit dem folgenden Befehl finden:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Hierdurch erhalten Sie einige IP-Adressen. Sie können diese abwechselnd in Ihrem Webbrowser ausprobieren.
Als Alternative können Sie prüfen, welche IP-Adresse von anderen Stellen im Internet aus erreichbar ist:
- curl -4 icanhazip.com
Geben Sie die Adresse ein, die Sie in Ihrem Webbrowser erhalten, und Sie werden zur Standard-Startseite von Nginx weitergeleitet:
Wenn Sie diese Seite sehen, ist Ihr Webserver korrekt installiert.
Jetzt, wo Ihr Webserver in Betrieb ist, können Sie überprüfen, wie der Nginx-Service über systemctl
verwaltet werden kann.
Wenn Sie Ihren Webserver anhalten möchten, können Sie Folgendes anwenden:
- sudo systemctl stop nginx
Um den Webserver zu starten, wenn er angehalten wurde, geben Sie Folgendes ein:
- sudo systemctl start nginx
Um den Service anzuhalten und anschließend erneut zu starten, können Sie Folgendes anwenden:
- sudo systemctl restart nginx
Nginx kann auch Konfigurationsänderungen neu laden, ohne die Verbindungen zu unterbrechen. Dazu geben Sie Folgendes ein:
- sudo systemctl reload nginx
Standardmäßig ist Nginx so konfiguriert, dass es beim Booten des Servers automatisch startet. Wenn Sie dieses Verhalten nicht wünschen, können Sie es durch folgende Eingabe deaktivieren:
- sudo systemctl disable nginx
Zum Reaktivieren des Services, damit Nginx wieder beim Booten startet, können Sie Folgendes anwenden:
- sudo systemctl enable nginx
Nachdem Sie nun wissen, wie Sie den Nginx-Service verwalten, nehmen Sie sich einige Minuten Zeit, um sich mit einigen wichtigen Verzeichnissen und Dateien vertraut zu machen.
/usr/share/nginx/html
: Der eigentliche Web-Inhalt, der standardmäßig nur aus der Nginx-Standardseite besteht, die Sie zuvor gesehen haben, wird aus dem Verzeichnis /usr/share/nginx/html
bedient. Das kann durch die Anpassung der Konfigurationsdateien von Nginx geändert werden./etc/nginx
: Das Nginx-Konfigurationsverzeichnis. Hier befinden sich alle Konfigurationsdateien von Nginx./etc/nginx/nginx.conf
: Die Hauptkonfigurationsdatei von Nginx. Dies kann modifiziert werden, um die globale Konfiguration von Nginx zu ändern./etc/nginx/conf.d/
: Dieses Verzeichnis enthält Serverblock-Konfigurationsdateien, in denen Sie die Websites definieren können, die innerhalb von Nginx gehostet werden. Eine typische Vorgehensweise hierbei ist, jede Website in einer separaten Datei zu speichern, die nach dem Domänennamen der Website benannt wird, wie z. B. your_domain.conf
./var/log/nginx/access.log
: Jede Anfrage auf Ihrem Webserver wird in dieser Protokolldatei aufgezeichnet, sofern Nginx nicht anders konfiguriert ist./var/log/nginx/error.log
: In diesem Protokoll werden alle Nginx-Fehler aufgezeichnet.Wenn Sie mehrere Websites auf dem gleichen Nginx Webserver hosten möchten, müssen Sie Serverblocks einrichten. Nginx-Serverblocks arbeiten ähnlich wie virtuelle Apache-Hosts: Sie ermöglichen es einem einzelnen Server, auf mehrere Domänennamen zu antworten und für jeden von ihnen unterschiedliche Inhalte bereitzustellen. Auf CentOS 8 werden Serverblocks in .conf
-Dateien definiert, die sich in /etc/nginx/conf.d
befinden.
Richten Sie einen Serverblock für eine Domäne namens your_domain ein. Um mehr über die Einrichtung eines Domänenamens mit DigitalOcean zu erfahren, lesen Sie unsere Einführung zu DigitalOcean DNS.
Standardmäßig ist Nginx auf CentOS 8 konfiguriert, um Dokumente aus einem Verzeichnis in /usr/share/nginx/html
zu bedienen. Das eignet sich gut für eine Website, kann aber umständlich werden, wenn Sie mehrere hosten. Statt /usr/share/nginx/html
zu ändern, erstellen Sie eine Verzeichnisstruktur innerhalb /var/www
für Ihre Website your_domain und lassen dabei /usr/share/nginx/html
als Standardverzeichnis stehen, das bereitgestellt wird, wenn eine Client-Anfrage zu keinen übereinstimmenden Websites führt.
Erstellen Sie das Verzeichnis für your_domain wie folgt, wobei Sie das Kennzeichen -p
nutzen, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:
- sudo mkdir -p /var/www/your_domain/html
Als Nächstes weisen Sie die Eigentumsrechte des Verzeichnisses mit der Umgebungsvariablen $USER
zu, die auf Ihren aktuellen Systembenutzer verweisen sollte:
- sudo chown -R $USER:$USER /var/www/your_domain/html
Als Nächstes erstellen Sie eine index.html
Probeseite, um die Serverblock-Konfiguration zu testen. Der in CentOS 8 integrierte Standard-Texteditor ist vi
. vi
ist ein extrem leistungsfähiger Texteditor, kann jedoch für Nutzer, die wenig Erfahrung mit ihm haben, etwas schwerfällig sein. Sie können bei Bedarf einen benutzerfreundlicheren Editor wie nano
installieren, um die Bearbeitung von Konfigurationsdateien auf Ihrem CentOS-8-Server zu erleichtern:
- sudo dnf install nano
Nun können Sie nano
verwenden, um die index.html
Probedatei zu erstellen:
- nano /var/www/your_domain/html/index.html
Fügen Sie den folgenden HTML-Code in die Datei 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>
Wenn Sie fertig sind, speichern und schließen Sie die Datei. Wenn Sie nano
verwendet haben, können Sie hierzu STRG + X
, Y
, und dann ENTER
drücken.
Damit Nginx den Inhalt bereitstellen kann, müssen Sie einen Serverblock mit den korrekten Direktiven erstellen, die auf Ihre benutzerdefinierte Web-Root verweisen. Hierzu erstellen Sie einen neuen Serverblock in /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;
}
}
Speichern und schließen Sie die Datei, wenn Sie mit der Bearbeitung des Inhalts fertig sind.
Um sicherzustellen, dass es keine Syntaxfehler in Ihren Nginx-Dateien gibt, führen Sie Folgendes aus:
- sudo nginx -t
Wenn keine Probleme bestehen, wird die folgende Ausgabe angezeigt:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Wenn Ihr Konfigurationstest bestanden ist, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:
- sudo systemctl restart nginx
Bevor Sie die Änderungen von Ihrem Browser testen können, müssen Sie die SELinux Sicherheitskontexte Ihres Servers aktualisieren, damit Nginx den Inhalt aus dem Verzeichnis /var/www/your_domain
bereitstellen kann.
Mit dem folgenden Befehl können Sie Ihr benutzerdefiniertes Dokumentverzeichnis als HTTP-Inhalt bereitstellen:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Jetzt können Sie Ihr benutzerdefiniertes Domäne-Setup testen, indem Sie zu http://your_domain
, navigieren. Dort sehen Sie etwa Folgendes:
Diese Seite ist die Darstellung des HTML-Codes, den wir im benutzerdefinierten, für den Server erstellten Dokumentverzeichnis definiert haben. Wenn Sie diese Seite sehen können, bedeutet dies, dass Ihr Nginx-Server korrekt für die Bedienung Ihrer Domäne konfiguriert ist.
In diesem Leitfaden haben Sie gelernt, wie man Nginx, einen Hochleistungs-Webserver und Reverse-Proxy, installiert und einrichtet. Sie konnten überprüfen, wie der auf Ihrem Server laufende Nginx-Service verwaltet wird und welche Hauptverzeichnisse Nginx zur Speicherung von Konfigurationsdateien, Inhalten und Protokollen verwendet.
Nun haben Sie zahlreiche Möglichkeiten für verschiedene Inhalte und Technologien, die Sie auf den auf Ihrem Webserver gehosteten Websites anwenden können.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Very helpful article! I’ve ran into a few issues of nginx not accepting my server-blocks configuration when I put two values into server_name though. It only worked after removing the
www.[your_domain]
part and creating an own another “server” listener. The result looked just about like this: