Nginx Basis
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).