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
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
Lösung
Erstelle eine Datei namens /etc/yum.repos.d/nginx.repo, die den folgenden Inhalt enthält:
[
nginx]
name
=
nginxrepo
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 centos
je 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
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
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:00nginx:
master
process
nginx
1739
1738
0
19
:54?
00
:00:00nginx:
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
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
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 wiestop
,quit
,reload
undreopen
senden. Das Signalstop
bricht den NGINX-Prozess sofort ab. Das Signalquit
hält den NGINX-Prozess an, nachdem er die Bearbeitung laufender Anfragen beendet hat. Mit dem Signalreload
wird die Konfiguration neu geladen. Dasreopen
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
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
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.