Nginx installieren und konfigurieren: Best Practices für Performance

Nginx ist einer der leistungsfähigsten und ressourcenschonendsten Webserver, der sowohl für kleine Projekte als auch für stark frequentierte Websites geeignet ist. In diesem Leitfaden erklären wir Schritt für Schritt, wie Nginx installiert, konfiguriert und für optimale Performance optimiert wird. Der Fokus liegt auf Best Practices, die sowohl Einsteigern als auch professionellen Netzwerkingenieuren helfen, einen stabilen und schnellen Webserver einzurichten.

Systemvorbereitung

Bevor Nginx installiert wird, sollte das Linux-System aktualisiert und auf den aktuellen Stand gebracht werden.

Systemupdate

sudo apt update
sudo apt upgrade -y

Für CentOS:

sudo yum update -y

Notwendige Pakete installieren

Einige Basiswerkzeuge sind hilfreich für die Installation und Verwaltung von Nginx:

sudo apt install wget curl git unzip -y

Nginx Installation

Nginx kann über die Paketverwaltung installiert oder aus den offiziellen Repositories kompiliert werden. Für die meisten Anwendungsfälle reicht die Paketinstallation.

Installation unter Ubuntu/Debian

sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Installation unter CentOS/RHEL

sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Grundlegende Konfiguration

Nach der Installation sollten grundlegende Einstellungen wie Benutzer, Serverblöcke und Protokolle konfiguriert werden.

Hauptkonfigurationsdatei

Die Hauptdatei befindet sich unter /etc/nginx/nginx.conf. Wichtige Parameter:

  • worker_processes: Anzahl der Prozesse, optimalerweise die Anzahl der CPU-Kerne.
  • worker_connections: Maximale gleichzeitige Verbindungen pro Prozess.
  • keepalive_timeout: Dauer offener Verbindungen für Clients.
worker_processes auto;
events {
    worker_connections 1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout 65;
}

Serverblöcke (Virtual Hosts)

Serverblöcke ermöglichen das Hosting mehrerer Websites auf einem Server.

Beispiel für einen Serverblock

sudo nano /etc/nginx/sites-available/meinewebsite
server {
    listen 80;
    server_name meinewebsite.de www.meinewebsite.de;
root /var/www/meinewebsite;
index index.html index.php;

location / {
try_files $uri $uri/ =404;
}

location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}

error_log /var/log/nginx/meinewebsite_error.log;
access_log /var/log/nginx/meinewebsite_access.log;

}

sudo ln -s /etc/nginx/sites-available/meinewebsite /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Performance-Optimierung

Nginx bietet zahlreiche Optionen, um die Performance zu steigern, insbesondere bei stark frequentierten Websites.

Caching aktivieren

  • Static Content Caching: Für CSS, JS, Bilder
  • Proxy Caching: Für dynamische Inhalte
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public";
}

Gzip-Kompression aktivieren

http {
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

Keepalive optimieren

keepalive_timeout 65;
tcp_nopush on;
tcp_nodelay on;

Worker-Prozesse und Verbindungen

Die Anzahl der Prozesse sollte automatisch die Anzahl der CPU-Kerne berücksichtigen:

worker_processes auto;
events {
    worker_connections 4096;
}

Sicherheit

Ein abgesicherter Webserver schützt vor unbefugtem Zugriff und Angriffen.

Firewall konfigurieren

sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

SSL-Zertifikate

HTTPS ist Pflicht für sichere Verbindungen. Let’s Encrypt bietet kostenlose Zertifikate.

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx

Monitoring und Logs

Überwachung ist essentiell, um die Stabilität und Performance zu gewährleisten.

Log-Dateien prüfen

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

Status-Seite aktivieren

location /nginx_status {
    stub_status;
    allow 127.0.0.1;
    deny all;
}

Netzwerkkonfiguration für Nginx

Ein korrekt konfiguriertes Netzwerk garantiert Erreichbarkeit und Performance.

Subnetzberechnung

Beispiel: IP 10.0.0.15/24

<math>
Subnetzadresse = 10.0.0.15 & 255.255.255.0 = 10.0.0.0
Broadcastadresse = 10.0.0.0 | ~255.255.255.0 = 10.0.0.255
</math>

Netzwerkinterface konfigurieren

sudo nano /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - 10.0.0.15/24
      gateway4: 10.0.0.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply

Zusätzliche Tools und Best Practices

  • PHP-FPM für effiziente PHP-Ausführung
  • Fail2ban für Schutz gegen Brute-Force-Angriffe
  • Logrotate für automatische Logverwaltung
  • Let’s Encrypt für automatische Zertifikatserneuerung
  • Content Delivery Network (CDN) zur Entlastung des Servers

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles