Tutorial

Installieren von Nginx auf CentOS 8

Published on April 15, 2020

Developer Advocate

Deutsch
Installieren von Nginx auf CentOS 8

Einführung

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.

Voraussetzungen

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.

Schritt 1 — Installieren des Nginx Webservers

Um Nginx zu installieren, verwenden Sie den Paketmanager dnf, den neuen Standard-Paketmanager auf CentOS 8.

Installieren Sie das Nginx Paket mit:

  1. 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:

  1. sudo systemctl enable nginx
  2. sudo systemctl start nginx

Dadurch wird Nginx beim Boot des Systems gestartet.

Schritt 2 — Anpassen der Firewalleinstellungen

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:

  1. 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:

  1. sudo firewall-cmd --permanent --list-all

Die Ausgabe sieht dann so aus:

Output
public 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:

  1. sudo firewall-cmd --reload

Nun ist Ihr Nginx Server komplett installiert und bereit für den Zugriff von externen Besuchern.

Schritt 3 — Testen Ihres Webservers

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:

  1. 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:

  1. curl -4 icanhazip.com

Geben Sie die Adresse ein, die Sie in Ihrem Webbrowser erhalten, und Sie werden zur Standard-Startseite von Nginx weitergeleitet:

Standard Nginx Page CentOS 8

Wenn Sie diese Seite sehen, ist Ihr Webserver korrekt installiert.

Schritt 4 – Verwalten der Nginx-Prozesse

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:

  1. sudo systemctl stop nginx

Um den Webserver zu starten, wenn er angehalten wurde, geben Sie Folgendes ein:

  1. sudo systemctl start nginx

Um den Service anzuhalten und anschließend erneut zu starten, können Sie Folgendes anwenden:

  1. sudo systemctl restart nginx

Nginx kann auch Konfigurationsänderungen neu laden, ohne die Verbindungen zu unterbrechen. Dazu geben Sie Folgendes ein:

  1. 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:

  1. sudo systemctl disable nginx

Zum Reaktivieren des Services, damit Nginx wieder beim Booten startet, können Sie Folgendes anwenden:

  1. sudo systemctl enable nginx

Schritt 5 – Kennenlernen der wichtigen Nginx-Dateien und -Verzeichnisse

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.

Inhalt

  • /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.

Server-Konfiguration

  • /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.

Serverprotokolle

  • /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.

Schritt 6 – Einrichten von Serverblocks (optional)

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:

  1. 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:

  1. 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:

  1. sudo dnf install nano

Nun können Sie nano verwenden, um die index.html Probedatei zu erstellen:

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

Fügen Sie den folgenden HTML-Code in die Datei ein:

/var/www/your_domain/html/index.html
<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:

  1. sudo nano /etc/nginx/conf.d/your_domain.conf

Fügen Sie den folgenden Konfigurationsblock ein:

/etc/nginx/conf.d/your_domain.conf
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:

  1. sudo nginx -t

Wenn keine Probleme bestehen, wird die folgende Ausgabe angezeigt:

Output
nginx: 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:

  1. 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:

  1. 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:

Nginx Serverblock

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.

Zusammenfassung

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.

Learn more about our products

About the authors
Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
1 Comments


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:

server {
    server_name www.your_domain;
    return 301 $scheme://your_domain$request_uri;
}
server {
    server_name your_domain;

    ... your configuration ...

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.