Nginx/Konfiguration: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K Textersetzung - „ z. B.“ durch „ beispielsweise“ |
||
| (38 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
''' | '''Nginx/Konfiguration''' - Nginx konfigurieren | ||
== Beschreibung == | === Beschreibung === | ||
; Konfigurationsdateien | |||
[[/etc/nginx/]] | |||
; Grundkonfigurationsdatei | |||
[[nginx.conf]] | |||
; | |||
In dieser Datei kann beispielsweise 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 | * In den `server` Sektionen erfolgt die Konfiguration von beispielsweise 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 95: | 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 104: | 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 110: | 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 137: | Zeile 70: | ||
server_name _; | server_name _; | ||
location /test { | |||
root /var/www/html/test; | |||
try_files $uri $uri/ =404; | try_files $uri $uri/ =404; | ||
} | |||
location / { | location / { | ||
| Zeile 146: | 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 152: | 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; | |||
root /var/www/html/test; | root /var/www/html/test; | ||
| Zeile 175: | 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 | 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 16. Juni 2026, 09:29 Uhr
Nginx/Konfiguration - Nginx konfigurieren
Beschreibung
- Konfigurationsdateien
- Grundkonfigurationsdatei
In dieser Datei kann beispielsweise 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 beispielsweise 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