Nginx Basis: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= Installation =
 
= Installation =
;Debian
+
 
* '''sudo apt install nginx'''
+
* '''Debian/Ubuntu:'''
;Rocky
 
 
* '''sudo apt install nginx'''
 
* '''sudo apt install nginx'''
 +
 +
* '''Rocky/RHEL/CentOS:''' 
 +
* '''sudo dnf install nginx''' 
 +
(ggf. vorher: '''sudo dnf install epel-release''')
  
 
=Start=
 
=Start=
Zeile 10: Zeile 13:
 
=Stop=
 
=Stop=
 
*systemctl stop nginx
 
*systemctl stop nginx
 +
=Enable=
 +
*systemctl enable nginx
  
 
=Restart=
 
=Restart=
Zeile 21: Zeile 26:
  
 
=Port check=
 
=Port check=
*netstat -lntp | grep nginx
+
*ss -lntp | grep nginx
 
  tcp        0      0 0.0.0.0:80              0.0.0.0:*              LISTEN      1438/nginx -g daemo
 
  tcp        0      0 0.0.0.0:80              0.0.0.0:*              LISTEN      1438/nginx -g daemo
 
  tcp6      0      0 :::80                  :::*                    LISTEN      1438/nginx -g daemo
 
  tcp6      0      0 :::80                  :::*                    LISTEN      1438/nginx -g daemo
  
=Content=
+
=Webseiteninhalt=
 +
Standardverzeichnis für Webseiteninhalte:
 
*/var/www/html
 
*/var/www/html
  
=Config=
+
=Konfigurationsverzeichnis=
*/etc/nginx  
+
 
Das Konfigurationsverzeichnis von nginx. Alle Konfigurationsdateien befinden sich hier.
+
'''/etc/nginx''' 
 +
Dies ist das Hauptverzeichnis für alle nginx-Konfigurationsdateien. 
 +
Hier befinden sich die globale Konfiguration sowie alle Unterverzeichnisse für virtuelle Hosts und zusätzliche Einstellungen.
 +
 
 +
Unterschiede:
 +
* '''Debian/Ubuntu:''' nutzt zusätzlich die Verzeichnisse ''sites-available'' und ''sites-enabled'' für virtuelle Hosts.
 +
* '''Rocky/RHEL/CentOS:''' nutzt diese Verzeichnisse nicht. Stattdessen wird direkt mit ''conf.d'' gearbeitet.
 +
 
 +
=Hauptkonfiguration=
 +
 
 +
'''/etc/nginx/nginx.conf''' 
 +
Dies ist die zentrale Konfigurationsdatei. Sie steuert globale Einstellungen wie Worker-Prozesse, Protokolle, SSL und das Einbinden weiterer Konfigurationsdateien.
 +
 
 +
=Weitere Verzeichnisse=
 +
 
 +
'''/etc/nginx/sites-available''' 
 +
Wird unter Debian/Ubuntu verwendet, um virtuelle Hosts (Server-Blocks) zu definieren. Diese Konfigurationsdateien müssen per Symlink in ''sites-enabled'' aktiviert werden.
 +
 
 +
'''/etc/nginx/sites-enabled''' 
 +
Beinhaltet Symlinks auf aktivierte Server-Blocks aus ''sites-available''. Nur diese Konfigurationen werden geladen.
  
*/etc/nginx/nginx.conf  
+
'''/etc/nginx/conf.d'''  
Die zentrale Konfigurationsdatei von nginx. Änderungen an der globalen Konfiguration erfolgen hier.
+
Dieses Verzeichnis wird von allen Distributionen verwendet (besonders unter Rocky/RHEL/CentOS), um zusätzliche Konfigurationsdateien im Stil von *.conf automatisch einzubinden.
  
*/etc/nginx/sites-available  
+
'''/etc/nginx/snippets'''  
Verzeichnis für server-spezifische Konfigurationsdateien (virtuelle Hosts). Diese werden erst aktiv, wenn sie mit einem Link nach ''sites-enabled'' verknüpft sind.
+
Nur unter Debian/Ubuntu vorhanden. Enthält wiederverwendbare Konfigurations-Schnipsel, die per ''include'' eingebunden werden können.
  
*/etc/nginx/sites-enabled/ 
+
=Server-Logs=
Verzeichnis für aktivierte virtuelle Hosts. Verlinkt auf Dateien in ''sites-available''.
 
  
*/etc/nginx/snippets  
+
'''/var/log/nginx/access.log'''  
Hier befinden sich Konfigurations-Schnipsel, die in andere Dateien eingebunden werden können. Ideal für wiederverwendbare Konfigurationsteile.
+
Hier werden alle HTTP-Anfragen protokolliert (sofern aktiviert).
  
=Server Logs=
+
'''/var/log/nginx/error.log'''  
*/var/log/nginx/access.log   
+
Hier werden Fehler protokolliert, z. B. Syntaxfehler in Konfigurationen oder Laufzeitprobleme.
Protokolliert alle eingehenden Anfragen, sofern dies nicht deaktiviert wurde.
 
  
*/var/log/nginx/error.log 
+
=Inhalt der nginx.conf=
Protokolliert Fehlermeldungen von nginx.
 
  
=Config files=
+
'''/etc/nginx/nginx.conf'''
*/etc/nginx/nginx.conf
 
 
<pre>
 
<pre>
 
user www-data;
 
user www-data;
Zeile 79: Zeile 100:
 
</pre>
 
</pre>
  
==Erklärung==
+
=Erklärung der wichtigsten Direktiven=
 +
 
 
===user===   
 
===user===   
Der Benutzer, unter dem der nginx-Prozess läuft.
+
Legt den Benutzer fest, unter dem nginx läuft.
 +
* '''Debian/Ubuntu:''' www-data 
 +
* '''Rocky/RHEL/CentOS:''' nginx
  
 
===pid===   
 
===pid===   
Datei, in der die Prozess-ID gespeichert wird.
+
Pfad zur Datei, in der die Prozess-ID gespeichert wird.
 +
 
 +
===worker_processes / worker_connections=== 
 +
Steuert, wie viele Prozesse und gleichzeitige Verbindungen nginx verarbeiten kann.
  
 
===keepalive_timeout===   
 
===keepalive_timeout===   
Zeile 90: Zeile 117:
  
 
===http===   
 
===http===   
Beginnt den HTTP-Konfigurationsblock.
+
Beginnt den Hauptblock für HTTP-bezogene Konfigurationen.
  
 
===include===   
 
===include===   
Bindet andere Konfigurationsdateien ein.
+
Bindet weitere Konfigurationsdateien ein, z. B. aus ''conf.d'' oder ''sites-enabled''.
  
 
===ssl_protocols===   
 
===ssl_protocols===   
Gibt die erlaubten SSL/TLS-Protokolle an.
+
Legt fest, welche SSL/TLS-Versionen erlaubt sind.
  
 
===access_log===   
 
===access_log===   
Pfad zur Datei, in der Zugriffe geloggt werden.
+
Pfad zur Datei, in der Zugriffe protokolliert werden.
  
 
===error_log===   
 
===error_log===   
 
Pfad zur Datei, in der Fehler protokolliert werden.
 
Pfad zur Datei, in der Fehler protokolliert werden.
 +
 +
===gzip=== 
 +
Aktiviert die GZIP-Komprimierung, um die Antwortgrößen zu reduzieren.
 +
 +
===types_hash_max_size=== 
 +
Legt die maximale Anzahl von MIME-Type-Hash-Einträgen fest (für Performance-Tuning).

Aktuelle Version vom 27. März 2025, 07:40 Uhr

Installation

  • Debian/Ubuntu:
  • sudo apt install nginx
  • Rocky/RHEL/CentOS:
  • sudo dnf install nginx

(ggf. vorher: sudo dnf install epel-release)

Start

  • systemctl start nginx

Stop

  • systemctl stop nginx

Enable

  • systemctl enable nginx

Restart

  • systemctl restart nginx

Reload

  • systemctl reload nginx

Status

  • systemctl status nginx

Port check

  • ss -lntp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1438/nginx -g daemo
tcp6       0      0 :::80                   :::*                    LISTEN      1438/nginx -g daemo

Webseiteninhalt

Standardverzeichnis für Webseiteninhalte:

  • /var/www/html

Konfigurationsverzeichnis

/etc/nginx Dies ist das Hauptverzeichnis für alle nginx-Konfigurationsdateien. Hier befinden sich die globale Konfiguration sowie alle Unterverzeichnisse für virtuelle Hosts und zusätzliche Einstellungen.

Unterschiede:

  • Debian/Ubuntu: nutzt zusätzlich die Verzeichnisse sites-available und sites-enabled für virtuelle Hosts.
  • Rocky/RHEL/CentOS: nutzt diese Verzeichnisse nicht. Stattdessen wird direkt mit conf.d gearbeitet.

Hauptkonfiguration

/etc/nginx/nginx.conf Dies ist die zentrale Konfigurationsdatei. Sie steuert globale Einstellungen wie Worker-Prozesse, Protokolle, SSL und das Einbinden weiterer Konfigurationsdateien.

Weitere Verzeichnisse

/etc/nginx/sites-available Wird unter Debian/Ubuntu verwendet, um virtuelle Hosts (Server-Blocks) zu definieren. Diese Konfigurationsdateien müssen per Symlink in sites-enabled aktiviert werden.

/etc/nginx/sites-enabled Beinhaltet Symlinks auf aktivierte Server-Blocks aus sites-available. Nur diese Konfigurationen werden geladen.

/etc/nginx/conf.d Dieses Verzeichnis wird von allen Distributionen verwendet (besonders unter Rocky/RHEL/CentOS), um zusätzliche Konfigurationsdateien im Stil von *.conf automatisch einzubinden.

/etc/nginx/snippets Nur unter Debian/Ubuntu vorhanden. Enthält wiederverwendbare Konfigurations-Schnipsel, die per include eingebunden werden können.

Server-Logs

/var/log/nginx/access.log Hier werden alle HTTP-Anfragen protokolliert (sofern aktiviert).

/var/log/nginx/error.log Hier werden Fehler protokolliert, z. B. Syntaxfehler in Konfigurationen oder Laufzeitprobleme.

Inhalt der nginx.conf

/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
        worker_connections 768;
}
http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        gzip on;
        gzip_disable "msie6";
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

Erklärung der wichtigsten Direktiven

user

Legt den Benutzer fest, unter dem nginx läuft.

  • Debian/Ubuntu: www-data
  • Rocky/RHEL/CentOS: nginx

pid

Pfad zur Datei, in der die Prozess-ID gespeichert wird.

worker_processes / worker_connections

Steuert, wie viele Prozesse und gleichzeitige Verbindungen nginx verarbeiten kann.

keepalive_timeout

Gibt an, wie lange eine Verbindung offen gehalten wird (in Sekunden).

http

Beginnt den Hauptblock für HTTP-bezogene Konfigurationen.

include

Bindet weitere Konfigurationsdateien ein, z. B. aus conf.d oder sites-enabled.

ssl_protocols

Legt fest, welche SSL/TLS-Versionen erlaubt sind.

access_log

Pfad zur Datei, in der Zugriffe protokolliert werden.

error_log

Pfad zur Datei, in der Fehler protokolliert werden.

gzip

Aktiviert die GZIP-Komprimierung, um die Antwortgrößen zu reduzieren.

types_hash_max_size

Legt die maximale Anzahl von MIME-Type-Hash-Einträgen fest (für Performance-Tuning).