Nginx/Konfiguration: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „== Konfiguration == Alle Konfigurationsdateien von nginx liegen im Verzeichnis '''/etc/nginx/''', die Grundkonfigurationsdatei ist '''nginx.conf''' * Diese besteht aus den Sektionen `events { [...] }` und `http { [...] }` * Kommentiert wird mit einer Raute (`#`) * Jede Konfigurationszeile muss mit einem Semikolon `;` abgeschlossen werden In dieser Datei kann z. B. fest gelegt werden, mit welchen Rechten nginx läuft, in welche Dateien geloggt w…“ |
Keine Bearbeitungszusammenfassung |
||
| (38 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== | '''Nginx/Konfiguration''' - Nginx konfigurieren | ||
=== Beschreibung === | |||
; Konfigurationsdateien | |||
[[/etc/nginx/]] | |||
; Grundkonfigurationsdatei | |||
[[nginx.conf]] | |||
In dieser Datei kann z. B. fest gelegt werden, mit welchen Rechten nginx läuft, in welche Dateien geloggt wird und auch die Verwendung von SSL kann hier konfiguriert werden | |||
=== Aufbau === | |||
; Sektionen | |||
* Diese besteht aus den Sektionen `events { [...] }` und `http { [...] }` | * Diese besteht aus den Sektionen `events { [...] }` und `http { [...] }` | ||
; Kommentare | |||
* Kommentiert wird mit einer Raute (`#`) | * Kommentiert wird mit einer Raute (`#`) | ||
; Zeilenende | |||
* Jede Konfigurationszeile muss mit einem Semikolon `;` abgeschlossen werden | * Jede Konfigurationszeile muss mit einem Semikolon `;` abgeschlossen werden | ||
; Sektionen | |||
Innerhalb der `http`-Sektionen können auch ein oder mehrere Sektionen `server { [...] }` angelegt werden, was im Kontext von nginx einem "virtuellen Server" entspricht (was das äquivalent zu "virtual hosts" beim Apache Server ist) | Innerhalb der `http`-Sektionen können auch ein oder mehrere Sektionen `server { [...] }` angelegt werden, was im Kontext von nginx einem "virtuellen Server" entspricht (was das äquivalent zu "virtual hosts" beim Apache Server ist) | ||
* In den `server` Sektionen erfolgt die Konfiguration von z. B. DocumentRoot, auf welcher IP-Adresse und auf welchem Port nginx lauscht, die Namensauflösung etc | * In den `server` Sektionen erfolgt die Konfiguration von z. B. DocumentRoot, auf welcher IP-Adresse und auf welchem Port nginx lauscht, die Namensauflösung etc | ||
; `server` Sektion | |||
Es muss mindestens eine `server` Sektion vorhanden sein | Es muss mindestens eine `server` Sektion vorhanden sein | ||
* Es können aber auch ohne weiteres mehrere Sektion aufgeführt werden | * Es können aber auch ohne weiteres mehrere Sektion aufgeführt werden | ||
| Zeile 16: | Zeile 29: | ||
* Bei komplexen Konfigurationen sollte man deshalb auf die Reihenfolge der verschiedenen `server` Sektionen achten | * Bei komplexen Konfigurationen sollte man deshalb auf die Reihenfolge der verschiedenen `server` Sektionen achten | ||
; sites-available | |||
Standardmäßig werden diese Daten in einer oder mehreren Dateien im Verzeichnis '''/etc/nginx/sites-available''' abgelegt und aktiviert | Standardmäßig werden diese Daten in einer oder mehreren Dateien im Verzeichnis '''/etc/nginx/sites-available''' abgelegt und aktiviert | ||
* Das Aktivieren geschieht dadurch, dass man einen [:ln:symbolische Link] der Datei '''/etc/nginx/sites-available/NAME_DER_DATEI''' nach '''/etc/nginx/sites-enabled/''' anlegt | * Das Aktivieren geschieht dadurch, dass man einen [:ln:symbolische Link] der Datei '''/etc/nginx/sites-available/NAME_DER_DATEI''' nach '''/etc/nginx/sites-enabled/''' anlegt | ||
| Zeile 25: | Zeile 39: | ||
=== Konfiguration === | === Konfiguration === | ||
; | ; Minimalkonfiguration | ||
Im folgenden Beispiel wird die vorhandene Konfigurationsdatei '''default''' um eine eigene Route erweitert, die eine einfache HTML-Seite ausgeben soll | Im folgenden Beispiel wird die vorhandene Konfigurationsdatei '''default''' um eine eigene Route erweitert, die eine einfache HTML-Seite ausgeben soll | ||
| Zeile 31: | Zeile 45: | ||
die folgenden Zeilen ein: | die folgenden Zeilen ein: | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
location /test { | |||
root /var/www/html/test; | |||
try_files $uri $uri/ =404; | |||
} | |||
</syntaxhighlight> | |||
; Erläuterung | |||
# Die erste Zeile legt fest, dass der folgende Block an Direktiven für die Route `/test` gilt | |||
# Die zweite Zeile legt das `root`-Verzeichnis, in dem nach (HTML-) Dateien gesucht wird, auf '''/var/www/html/test''' fest | |||
# Die dritte Zeile besagt, dass ein "404 - not found" zurückgeliefert werden soll, wenn keine passende (HTML) Datei gefunden wurde | |||
Die Datei '''default''' sieht somit nach dem Hinzufügen wie folgt aus | |||
* ohne Kommentarzeilen | |||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
Die Datei '''default''' sieht somit nach dem Hinzufügen | |||
server { | server { | ||
listen 80 default_server; | listen 80 default_server; | ||
| Zeile 67: | Zeile 79: | ||
} | } | ||
} | } | ||
</syntaxhighlight> | |||
Jetzt muss man noch das Verzeichnis '''/var/www/html/test''' anlegen und darin eine HTML-Datei '''index.html''' erstellt werden | Jetzt muss man noch das Verzeichnis '''/var/www/html/test''' anlegen und darin eine HTML-Datei '''index.html''' erstellt werden | ||
| Zeile 73: | Zeile 85: | ||
Die geänderte Konfigurationsdatei wird mit dem folgenden Befehl auf Fehler getestet: | Die geänderte Konfigurationsdatei wird mit dem folgenden Befehl auf Fehler getestet: | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
sudo nginx -t | sudo nginx -t | ||
</syntaxhighlight> | |||
Der Aufruf von `http://localhost/test` sollte jetzt die selbst angelegte HTML-Seite anzeigen | Der Aufruf von `http://localhost/test` sollte jetzt die selbst angelegte HTML-Seite anzeigen | ||
Möchte man die Route `/test` in einer eigenen Konfigurationsdatei namens '''test''' hinterlegen, sollte die Datei so aussehen: | Möchte man die Route `/test` in einer eigenen Konfigurationsdatei namens '''test''' hinterlegen, sollte die Datei so aussehen: | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
server { | server { | ||
listen 80; | listen 80; | ||
listen [::]:80; | listen [::]:80; | ||
| Zeile 96: | Zeile 106: | ||
} | } | ||
} | } | ||
</syntaxhighlight> | |||
; sites-enabled | |||
Dann muss noch der symbolisch Link nach '''/etc/nginx/sites-enabled''' angelegt und die Konfiguration von nginx neu geladen werden: | Dann muss noch der symbolisch Link nach '''/etc/nginx/sites-enabled''' angelegt und die Konfiguration von nginx neu geladen werden: | ||
<syntaxhighlight lang="bash" highlight="1" line copy> | |||
sudo nginx -s reload | |||
</syntaxhighlight> | |||
{ | === Dateien === | ||
{| class="wikitable options big" | |||
} | |- | ||
! Datei !! Beschreibung | |||
|- | |||
| || | |||
|- | |||
| || | |||
|} | |||
<noinclude> | |||
=== | == Anhang == | ||
=== Siehe auch === | |||
<div style="column-count:2"> | |||
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree> | |||
</div> | |||
---- | |||
{{Special:PrefixIndex/{{BASEPAGENAME}}/}} | |||
=== Dokumentation === | |||
<!-- | |||
; Man-Page | |||
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)] | |||
; Info-Pages | |||
--> | |||
=== Links === | |||
==== Projekt ==== | |||
==== Weblinks ==== | |||
[[Kategorie:Nginx/Konfiguration]] | |||
</noinclude> | |||
Aktuelle Version vom 27. Oktober 2025, 19:03 Uhr
Nginx/Konfiguration - Nginx konfigurieren
Beschreibung
- Konfigurationsdateien
- Grundkonfigurationsdatei
In dieser Datei kann z. B. fest gelegt werden, mit welchen Rechten nginx läuft, in welche Dateien geloggt wird und auch die Verwendung von SSL kann hier konfiguriert werden
Aufbau
- Sektionen
- Diese besteht aus den Sektionen `events { [...] }` und `http { [...] }`
- Kommentare
- Kommentiert wird mit einer Raute (`#`)
- Zeilenende
- Jede Konfigurationszeile muss mit einem Semikolon `;` abgeschlossen werden
- Sektionen
Innerhalb der `http`-Sektionen können auch ein oder mehrere Sektionen `server { [...] }` angelegt werden, was im Kontext von nginx einem "virtuellen Server" entspricht (was das äquivalent zu "virtual hosts" beim Apache Server ist)
- In den `server` Sektionen erfolgt die Konfiguration von z. B. DocumentRoot, auf welcher IP-Adresse und auf welchem Port nginx lauscht, die Namensauflösung etc
- `server` Sektion
Es muss mindestens eine `server` Sektion vorhanden sein
- Es können aber auch ohne weiteres mehrere Sektion aufgeführt werden
- nginx arbeitet die `server` Sektionen von oben nach unten ab
- Treffen die Bedingungen in der Sektion auf die Anfrage zu, werden die entsprechenden Daten ausgeliefert
- Bei komplexen Konfigurationen sollte man deshalb auf die Reihenfolge der verschiedenen `server` Sektionen achten
- sites-available
Standardmäßig werden diese Daten in einer oder mehreren Dateien im Verzeichnis /etc/nginx/sites-available abgelegt und aktiviert
- Das Aktivieren geschieht dadurch, dass man einen [:ln:symbolische Link] der Datei /etc/nginx/sites-available/NAME_DER_DATEI nach /etc/nginx/sites-enabled/ anlegt
In der Standardinstallation ist bereits die Datei default vorhanden und aktiviert
- Diese Datei kann man um eigene `server` Sektionen erweitern, wie im folgenden Beispiel gezeigt wird
Zum Deaktivieren reicht es, den entsprechenden symbolischen Link aus dem Verzeichnis /etc/nginx/sites-enabled zu löschen
Konfiguration
- Minimalkonfiguration
Im folgenden Beispiel wird die vorhandene Konfigurationsdatei default um eine eigene Route erweitert, die eine einfache HTML-Seite ausgeben soll
Dazu öffnet man die Datei default mit einem Editor mit Root-Rechten[4][5] und fügt nach der Zeile `server_name: _;`
die folgenden Zeilen ein:
location /test {
root /var/www/html/test;
try_files $uri $uri/ =404;
}
- Erläuterung
- Die erste Zeile legt fest, dass der folgende Block an Direktiven für die Route `/test` gilt
- Die zweite Zeile legt das `root`-Verzeichnis, in dem nach (HTML-) Dateien gesucht wird, auf /var/www/html/test fest
- Die dritte Zeile besagt, dass ein "404 - not found" zurückgeliefert werden soll, wenn keine passende (HTML) Datei gefunden wurde
Die Datei default sieht somit nach dem Hinzufügen wie folgt aus
- ohne Kommentarzeilen
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location /test {
root /var/www/html/test;
try_files $uri $uri/ =404;
}
location / {
try_files $uri $uri/ =404;
}
}
Jetzt muss man noch das Verzeichnis /var/www/html/test anlegen und darin eine HTML-Datei index.html erstellt werden
Die geänderte Konfigurationsdatei wird mit dem folgenden Befehl auf Fehler getestet:
sudo nginx -t
Der Aufruf von `http://localhost/test` sollte jetzt die selbst angelegte HTML-Seite anzeigen
Möchte man die Route `/test` in einer eigenen Konfigurationsdatei namens test hinterlegen, sollte die Datei so aussehen:
server {
listen 80;
listen [::]:80;
root /var/www/html/test;
index index.html;
server_name test;
location /test {
try_files $uri $uri/ =404;
}
}
- sites-enabled
Dann muss noch der symbolisch Link nach /etc/nginx/sites-enabled angelegt und die Konfiguration von nginx neu geladen werden:
sudo nginx -s reload
Dateien
| Datei | Beschreibung |
|---|---|
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks