Kapitel 1. Grundlagen

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

1.0 Einleitung

Um mit NGINX Open Source oder NGINX Plus zu starten, musst du es zunächst auf einem System installieren und einige Grundlagen lernen. In diesem Kapitel erfährst du, wie du NGINX installierst, wo sich die wichtigsten Konfigurationsdateien befinden und welche Befehle es für die Verwaltung gibt. Außerdem erfährst du, wie du deine Installation überprüfst und Anfragen an den Standardserver stellst.

Einige der Rezepte in diesem Buch verwenden NGINX Plus. Eine kostenlose Testversion von NGINX Plus erhältst du unter https://nginx.com.

1.1 Installation von NGINX unter Debian/Ubuntu

Problem

Du musst NGINX Open Source auf einem Debian oder Ubuntu Rechner installieren.

Lösung

Aktualisiere die Paketinformationen für konfigurierte Quellen und installiere einige Pakete, die bei der Konfiguration des offiziellen NGINX-Paket-Repositorys helfen:

$ apt update
$ apt install -y curl gnupg2 ca-certificates lsb-release \
    debian-archive-keyring

Lade den NGINX-Signierschlüssel herunter und speichere ihn:

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
  | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Verwende lsb_release, um die Variablen zu setzen, die das Betriebssystem und die Versionsnamen definieren, und erstelle dann eine apt-Quelldatei:

$ OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
$ RELEASE=$(lsb_release -cs)
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
    http://nginx.org/packages/${OS} ${RELEASE} nginx" \
    | tee /etc/apt/sources.list.d/nginx.list

Aktualisiere die Paketinformationen noch einmal und installiere dann NGINX:

$ apt update
$ apt install -y nginx
$ systemctl enable nginx
$ nginx

Diskussion

Die Befehle in diesem Abschnitt weisen das Paketverwaltungssystem advanced package tool (APT) an, das offizielle NGINX-Paket-Repository zu verwenden. Der NGINX GPG-Paketsignierungsschlüssel wurde heruntergeladen und zur Verwendung durch APT an einem Ort im Dateisystem gespeichert. Wenn APT den Signierschlüssel erhält, kann das APT-System die Pakete aus dem Repository validieren. Der Befehl lsb_release wurde verwendet, um automatisch das Betriebssystem und den Versionsnamen zu ermitteln, damit diese Anweisungen für alle Versionen von Debian oder Ubuntu verwendet werden können. Der Befehl apt update weist das APT-System an, seine Paketlisten aus den bekannten Repositories zu aktualisieren. Nachdem die Paketliste aktualisiert wurde, kannst du NGINX Open Source aus dem offiziellen NGINX-Repository installieren. Nach der Installation startet der letzte Befehl NGINX .

1.2 Installation von NGINX über den YUM-Paketmanager

Problem

Du musst NGINX Open Source auf Red Hat Enterprise Linux (RHEL), Oracle Linux, AlmaLinux, Rocky Linux oder CentOS installieren.

Lösung

Erstelle eine Datei namens /etc/yum.repos.d/nginx.repo, die den folgenden Inhalt enthält:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Ändern Sie die Datei und ersetzen Sie OS in der Mitte der URL durch rhel oder centosje nach deiner Distribution. Führe dann die folgenden Befehle aus:

$ yum -y install nginx
$ systemctl enable nginx
$ systemctl start nginx
$ firewall-cmd --permanent --zone=public --add-port=80/tcp
$ firewall-cmd --reload

Diskussion

Die Datei, die du gerade für diese Lösung erstellt hast, weist das Paketverwaltungssystem YUM an, das offizielle NGINX Open Source-Paket-Repository zu verwenden. Die folgenden Befehle installieren NGINX Open Source aus dem offiziellen Repository, weisen systemd an, NGINX beim Booten zu aktivieren, und sagen ihm, dass er NGINX jetzt starten soll. Falls erforderlich, öffnen die Firewall-Befehle den Port 80 für das Transmission Control Protocol (TCP), den Standardport für HTTP. Mit dem letzten Befehl wird die Firewall neu geladen, um die Änderungen zu übernehmen.

1.3 Installation von NGINX Plus

Problem

Du musst NGINX Plus installieren.

Lösung

Besuche die NGINX-Dokumente. Wähle das Betriebssystem aus, auf dem du installierst, und folge dann den Anweisungen. Die Anweisungen sind ähnlich wie bei der Installation der Open-Source-Lösungen, allerdings musst du dir ein Zertifikat und einen Schlüssel besorgen, um dich beim NGINX Plus Repository zu authentifizieren.

Diskussion

NGINX hält diesen Repository-Installationsleitfaden mit Anweisungen zur Installation von NGINX Plus auf dem neuesten Stand. Je nach Betriebssystem und Version variieren diese Anweisungen leicht, aber es gibt eine Gemeinsamkeit. Du musst dir ein Zertifikat und einen Schlüssel vom NGINX-Portal besorgen und sie deinem System zur Verfügung stellen, um dich beim NGINX Plus-Repository zu authentifizieren.

1.4 Überprüfen deiner Installation

Problem

Du möchtest die NGINX-Installation validieren und die Version überprüfen.

Lösung

Mit folgendem Befehl kannst du überprüfen, ob NGINX installiert ist und seine Version überprüfen:

$ nginx -v
nginx version: nginx/1.25.3

Wie dieses Beispiel zeigt, zeigt die Antwort die Version an.

Du kannst bestätigen, dass NGINX läuft, indem du den folgenden Befehl verwendest:

$ ps -ef | grep nginx
root      1738     1  0 19:54 ?  00:00:00 nginx: master process
nginx     1739  1738  0 19:54 ?  00:00:00 nginx: worker process

Der Befehl ps listet laufende Prozesse auf. Wenn du ihn an grep weiterleitest, kannst du in der Ausgabe nach bestimmten Wörtern suchen. In diesem Beispiel wird grep verwendet, um nach nginx zu suchen. Das Ergebnis zeigt zwei laufende Prozesse: master und worker. Wenn NGINX läuft, siehst du immer einen Master- und einen oder mehrere Worker-Prozesse. Beachte, dass der Master-Prozess als root läuft, da NGINX standardmäßig erhöhte Rechte benötigt, um richtig zu funktionieren. Eine Anleitung zum Starten von NGINX findest du im nächsten Rezept. Um zu sehen, wie du NGINX als Daemon startest, verwende die init.d oder systemd Methoden.

Um zu überprüfen, ob NGINX die Anfragen korrekt zurücksendet, kannst du mit deinem Browser eine Anfrage an deinen Rechner stellen oder curl verwenden. Verwende bei der Anfrage die IP-Adresse oder den Hostnamen deines Rechners. Wenn du NGINX lokal installiert hast, kannst du localhost wie folgt verwenden:

$ curl localhost

Du siehst die Standard-HTML-Seite von NGINX Welcome.

Diskussion

Mit dem Befehl nginx kannst du mit der NGINX-Binärdatei interagieren, um die Version zu überprüfen, installierte Module aufzulisten, Konfigurationen zu testen und Signale an den Master-Prozess zu senden. NGINX muss laufen, damit es Anfragen bedienen kann. Der Befehl ps ist eine sichere Methode, um festzustellen, ob NGINX als Daemon oder im Vordergrund läuft. In der Standardkonfiguration von NGINX wird ein statischer HTTP-Server auf Port 80 ausgeführt. Du kannst diese Standard-Site testen, indem du eine HTTP-Anfrage an den Rechner unter localhost stellst. Du solltest die IP und den Hostnamen des Rechners verwenden.

1.5 Wichtige Dateien, Verzeichnisse und Befehle

Problem

Du musst die wichtigen NGINX-Verzeichnisse und Befehle verstehen.

Lösung

Die folgenden Konfigurationsverzeichnisse und Dateispeicherorte können während der Kompilierung von NGINX geändert werden und können daher je nach deiner Installation variieren.

NGINX Dateien und Verzeichnisse

/etc/nginx/

Das Verzeichnis /etc/nginx/ ist das Standardkonfigurationsverzeichnis für den NGINX-Server. In diesem Verzeichnis findest du Konfigurationsdateien, die NGINX vorschreiben, wie er sich zu verhalten hat.

/etc/nginx/nginx.conf

Die Datei /etc/nginx/nginx.conf ist der Standardkonfigurationseinstiegspunkt für den NGINX-Daemon. In dieser Konfigurationsdatei werden globale Einstellungen für Dinge wie Worker-Prozesse, Tuning, Logging, das Laden dynamischer Module und Verweise auf andere NGINX-Konfigurationsdateien festgelegt. In einer Standardkonfiguration enthält die Datei /etc/nginx/nginx.conf den obersten Block http oder Kontext, der alle Konfigurationsdateien in dem nachfolgend beschriebenen Verzeichnis enthält.

/etc/nginx/conf.d/

Das Verzeichnis /etc/nginx/conf.d/ enthält die Standardkonfigurationsdatei des HTTP-Servers. Die Dateien in diesem Verzeichnis, die auf .conf enden, werden in den Top-Level-Block http in der Datei /etc/nginx/nginx.conf aufgenommen. Es ist die bewährte Methode, include Anweisungen zu verwenden und deine Konfiguration auf diese Weise zu organisieren, um deine Konfigurationsdateien übersichtlich zu halten. In einigen Paketquellen heißt dieser Ordner sites-enabled und die Konfigurationsdateien werden von einem Ordner namens site-available verlinkt; diese Konvention ist veraltet.

/var/log/nginx/

Das Verzeichnis /var/log/nginx/ ist der Standard-Log-Speicherort für NGINX. In diesem Verzeichnis findest du eine access.log-Datei und eine error.log-Datei. Das Zugriffsprotokoll enthält standardmäßig einen Eintrag für jede Anfrage, die NGINX bedient. Die error.log-Datei enthält Fehlerereignisse und Debug-Informationen, wenn das Modul debug aktiviert ist.

NGINX-Befehle

nginx -h

Zeigt das NGINX-Hilfemenü an.

nginx -v

Zeigt die NGINX-Version an.

nginx -V

Zeigt die NGINX-Version, Build-Informationen und Konfigurationsargumente an, die die in die NGINX-Binärdatei eingebauten Module anzeigen.

nginx -t

Testet die NGINX-Konfiguration.

nginx -T

Testet die NGINX-Konfiguration und gibt die bestätigte Konfiguration auf dem Bildschirm aus. Dieser Befehl ist nützlich, wenn du Support suchst.

nginx -s signal

Das -s Flag sendet ein Signal an den NGINX Master-Prozess. Du kannst Signale wie stop, quit, reload und reopen senden. Das Signal stop bricht den NGINX-Prozess sofort ab. Das Signal quit hält den NGINX-Prozess an, nachdem er die Bearbeitung laufender Anfragen beendet hat. Mit dem Signal reload wird die Konfiguration neu geladen. Das reopen Signal weist NGINX an, die Logdateien erneut zu öffnen.

Diskussion

Wenn du diese wichtigen Dateien, Verzeichnisse und Befehle kennst, bist du in einer guten Ausgangsposition, um mit NGINX zu arbeiten. Mit diesem Wissen kannst du die Standardkonfigurationsdateien ändern und deine Änderungen mit dem Befehl nginx -t testen. Wenn dein Test erfolgreich war, weißt du auch, wie du NGINX anweisen kannst, seine Konfiguration mit dem Befehl nginx -s reload neu zu laden.

1.6 Includes für saubere Konfigurationen verwenden

Problem

Du musst sperrige Konfigurationsdateien aufräumen, um deine Konfigurationen logisch in modulare Konfigurationssätze zu gruppieren.

Lösung

Verwende die include Direktive, um auf Konfigurationsdateien, Verzeichnisse oder Masken zu verweisen:

http {
  include conf.d/compression.conf;
  include ssl_config/*.conf
}

Die Direktive include benötigt einen einzigen Parameter, entweder einen Pfad zu einer Datei oder eine Maske, die auf mehrere Dateien passt. Diese Direktive ist in jedem Kontext gültig.

Diskussion

Mit include kannst du deine NGINX-Konfiguration sauber und übersichtlich halten. Du kannst deine Konfigurationen logisch gruppieren und so Konfigurationsdateien vermeiden, die Hunderte von Zeilen lang sind. Du kannst modulare Konfigurationsdateien erstellen, die an mehreren Stellen in deiner Konfiguration eingefügt werden können, um doppelte Konfigurationen zu vermeiden.

Ein Beispiel ist die fastcgi_param-Konfigurationsdatei, die in den meisten NGINX-Paketverwaltungsinstallationen enthalten ist. Wenn du mehrere FastCGI virtuelle Server auf einer einzigen NGINX-Box verwaltest, kannst du diese Konfigurationsdatei für jeden Ort oder Kontext einbinden, an dem du diese Parameter für FastCGI benötigst, ohne diese Konfiguration duplizieren zu müssen. Ein weiteres Beispiel sind Secure Sockets Layer (SSL) Konfigurationen. Wenn du mehrere Server betreibst, die ähnliche SSL-Konfigurationen benötigen, kannst du diese Konfiguration einfach einmal schreiben und überall dort einfügen, wo du sie brauchst.

Durch die logische Gruppierung deiner Konfigurationen kannst du sicher sein, dass deine Konfigurationen ordentlich und organisiert sind. Wenn du eine Reihe von Konfigurationsdateien änderst, kannst du eine einzige Datei bearbeiten, anstatt mehrere Konfigurationsblöcke an verschiedenen Stellen in einer großen Konfigurationsdatei zu ändern. Die Gruppierung deiner Konfigurationen in Dateien und die Verwendung von include Anweisungen ist eine gute Praxis für deine Vernunft und die Vernunft deiner Kollegen.

1.7 Statische Inhalte servieren

Problem

Du musst statische Inhalte mit NGINX bereitstellen.

Lösung

Überschreibe die Standard-HTTP-Serverkonfiguration in /etc/nginx/conf.d/default.conf mit dem folgenden NGINX-Konfigurationsbeispiel:

server {
  listen 80 default_server; 
  server_name www.example.com; 

  location / {
    root /usr/share/nginx/html;
    # alias /usr/share/nginx/html;
    index index.html index.htm;
  }
}

Diskussion

Diese Konfiguration stellt statische Dateien über HTTP auf Port 80 aus dem Verzeichnis /usr/share/nginx/html/ bereit. Die erste Zeile in dieser Konfiguration definiert einen neuen server Block. Damit wird ein neuer Kontext definiert, der angibt, worauf NGINX lauscht. Zeile zwei weist NGINX an, auf Port 80 zu lauschen, und der Parameter default_server weist NGINX an, diesen Server als Standardkontext für Port 80 zu verwenden. Die Direktive listen kann auch eine Reihe von Ports annehmen. Die Direktive server_name definiert den Hostnamen oder die Namen der Anfragen, die an diesen Server gerichtet werden sollen. Hätte die Konfiguration diesen Kontext nicht als default_server definiert, würde NGINX Anfragen nur dann an diesen Server leiten, wenn der HTTP-Host-Header mit dem Wert der Direktive server_name übereinstimmt. Wenn der Kontext default_server festgelegt ist, kannst du die Direktive server_name weglassen, wenn du noch keinen Domainnamen verwenden möchtest.

Der Block location definiert eine Konfiguration, die auf dem Pfad in der URL basiert. Der Pfad bzw. der Teil der URL nach der Domain wird als Uniform Resource Identifier (URI) bezeichnet. NGINX ordnet den angeforderten URI am besten einem location Block zu. Im Beispiel wird / verwendet, um alle Anfragen abzugleichen. Die Direktive root zeigt NGINX, wo es nach statischen Dateien suchen soll, wenn es Inhalte für den gegebenen Kontext serviert. Die URI der Anfrage wird bei der Suche nach der angeforderten Datei an den Wert der Direktive root angehängt. Hätten wir einen URI-Präfix für die Direktive location angegeben, würde dieser in den angehängten Pfad aufgenommen, es sei denn, wir verwenden die Direktive alias statt root. Die Direktive location kann eine Vielzahl von Ausdrücken abgleichen. Unter dem ersten Link im Abschnitt "Siehe auch" findest du weitere Informationen. Die Direktive index schließlich gibt NGINX eine Standarddatei oder eine Liste von Dateien vor, die überprüft werden sollen, wenn in der URI kein weiterer Pfad angegeben wird.

Get NGINX Kochbuch, 3. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.