Wie kann ich NGINX so konfigurieren, dass statische Dateien direkt serviert werden?
- Einführung
- Grundlagen der Konfiguration
- Wichtige Direktiven für statische Dateien
- Beispielkonfiguration
- Weitere Einstellungen und Optimierungen
- Neustart von NGINX
- Zusammenfassung
Einführung
NGINX ist ein weitverbreiteter Webserver, der sich besonders gut für das schnelle und effiziente Ausliefern von statischen Inhalten eignet.
Wenn Sie möchten, dass NGINX bestimmte statische Dateien wie HTML, CSS, JavaScript, Bilder oder andere Assets ohne Weiterleitung an
eine Backend-Anwendung oder ein externes System ausliefert, müssen Sie die Konfiguration so anpassen, dass der Webserver direkt auf das
Grundlagen der Konfiguration
Um statische Dateien direkt zu servieren, ist es wichtig, den Pfad zu dem Verzeichnis, in dem sich die Dateien befinden, korrekt anzugeben.
Dies erfolgt in der Server-Block-Konfiguration von NGINX innerhalb der Datei nginx.conf oder einer spezifischen Site-Konfigurationsdatei,
ungefähr unter /etc/nginx/sites-available/ oder einem ähnlichen Pfad, abhängig von der Systeminstallation.
Wichtige Direktiven für statische Dateien
Die zentrale Direktive für die Angabe des Verzeichnisses, aus dem Dateien ausgeliefert werden, ist root.
Mit ihr legen Sie das Basisverzeichnis fest, in dem sich Ihre statischen Dateien befinden. Eine andere wichtige Direktive ist location,
Beispielkonfiguration
Angenommen, Ihre statischen Dateien liegen in dem Verzeichnis /var/www/meine-webseite/. Sie möchten, dass NGINX alle Anfragen an den Server,
die unter http://meine-domain.de/ eintreffen, überprüft und vorhandene Dateien aus diesem Verzeichnis ausliefert.
server { listen 80; server_name meine-domain.de; root /var/www/meine-webseite; index index.html index.htm; location / { try_files $uri $uri/ =404; }}Hierbei bewirkt root /var/www/meine-webseite;, dass der Basisordner für Dateien festgelegt wird. Wenn der Client beispielsweise
http://meine-domain.de/bild.jpg anfordert, sucht NGINX nach /var/www/meine-webseite/bild.jpg.
Das index legt fest, welche Datei ausgeliefert wird, wenn eine Verzeichnisanfrage ohne Dateinamen ankommt.
Die Direktive try_files $uri $uri/ =404; prüft, ob die angeforderte Datei ($uri) oder das Verzeichnis ($uri/) existiert; falls beides nicht existiert,
Weitere Einstellungen und Optimierungen
Für die Auslieferung statischer Dateien ist es sinnvoll, die Cache-Kontrolle und Gzip-Kompression zu optimieren, damit die Ladezeiten reduziert werden.
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; access_log off; add_header Cache-Control "public";}Diese Einstellungen sorgen dafür, dass Dateien wie Bilder, CSS und JavaScript für 30 Tage im Browser-Cache gehalten werden, was die Performance verbessert.
Die Access-Logs werden für statische Dateien ausgeschaltet, um die Log-Dateien übersichtlicher zu halten.
Neustart von NGINX
Nachdem Sie die Konfiguration angepasst haben, müssen Sie NGINX neu laden oder neu starten, damit die Änderungen wirksam werden.
sudo nginx -tsudo systemctl reload nginxDer erste Befehl prüft die Konfiguration auf Syntaxfehler, der zweite lädt die geänderten Einstellungen ohne kompletten Neustart des Servers.
Zusammenfassung
Durch das Setzen des root-Verzeichnisses und der passenden location-Direktive mit try_files können Sie NGINX so konfigurieren,
dass statische Dateien direkt und effizient ausgeliefert werden. Optional können Sie weitere Optimierungen wie Cache-Header und Gzip-Kompression hinzufügen,
