Server Blocks in Nginx: Mehrere Websites sauber trennen

Server Blocks in Nginx ermöglichen es, mehrere Websites auf einem einzigen Server sauber zu trennen und unabhängig zu betreiben. Durch die Verwendung von Server Blocks lassen sich unterschiedliche Domains, Subdomains oder Webanwendungen separat konfigurieren, inklusive eigener Dokumentenstämme, Logs und Sicherheitsoptionen. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers, wie Server Blocks eingerichtet, optimiert und gewartet werden.

Voraussetzungen

Bevor Server Blocks eingerichtet werden, müssen einige Grundvoraussetzungen erfüllt sein:

  • Ein Linux-Server mit installiertem Nginx
  • Root- oder Sudo-Zugriff
  • DNS-Einträge der Domains auf die Server-IP zeigen
  • Grundkenntnisse im Dateisystem und Berechtigungen

Nginx Installation prüfen

Stellen Sie sicher, dass Nginx installiert und aktiv ist:

sudo systemctl status nginx

Falls nicht installiert:

sudo apt install nginx -y      # Ubuntu/Debian
sudo yum install nginx -y        # CentOS/RHEL

Verzeichnisstruktur für Server Blocks

Für jede Website sollte ein eigenes Verzeichnis angelegt werden, um Inhalte, Logs und Konfiguration sauber zu trennen.

Beispielstruktur

  • Webroot für Domain1: /var/www/domain1
  • Webroot für Domain2: /var/www/domain2
  • Konfigurationen: /etc/nginx/sites-available/ und aktivierte Links in /etc/nginx/sites-enabled/

Server Block für Domain1 einrichten

sudo mkdir -p /var/www/domain1
sudo chown -R www-data:www-data /var/www/domain1
sudo chmod -R 755 /var/www/domain1
sudo nano /etc/nginx/sites-available/domain1.conf
server {
    listen 80;
    server_name www.domain1.de domain1.de;

    root /var/www/domain1;
    index index.html index.htm;

    access_log /var/log/nginx/domain1_access.log;
    error_log /var/log/nginx/domain1_error.log;

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

Server Block für Domain2 einrichten

sudo mkdir -p /var/www/domain2
sudo chown -R www-data:www-data /var/www/domain2
sudo chmod -R 755 /var/www/domain2
sudo nano /etc/nginx/sites-available/domain2.conf
server {
    listen 80;
    server_name www.domain2.de domain2.de;

    root /var/www/domain2;
    index index.html index.htm;

    access_log /var/log/nginx/domain2_access.log;
    error_log /var/log/nginx/domain2_error.log;

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

Server Blocks aktivieren

Unter Ubuntu/Debian werden die Konfigurationen aktiviert, indem symbolische Links erstellt werden:

sudo ln -s /etc/nginx/sites-available/domain1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/domain2.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Unter CentOS/RHEL werden die Konfigurationsdateien im Verzeichnis /etc/nginx/conf.d/ abgelegt, ein Neustart reicht:

sudo systemctl restart nginx

HTTPS für Server Blocks

SSL/TLS sollte für alle Domains aktiviert werden. Let’s Encrypt bietet kostenlose Zertifikate.

Certbot Installation

sudo apt install certbot python3-certbot-nginx -y  # Ubuntu/Debian
sudo yum install certbot python3-certbot-nginx -y  # CentOS/RHEL

HTTPS für Domain1

sudo certbot --nginx -d domain1.de -d www.domain1.de

HTTPS für Domain2

sudo certbot --nginx -d domain2.de -d www.domain2.de

Fehlerprotokolle und Monitoring

Separate Logs pro Server Block erleichtern Monitoring und Debugging.

  • Access Logs: /var/log/nginx/domain1_access.log, /var/log/nginx/domain2_access.log
  • Error Logs: /var/log/nginx/domain1_error.log, /var/log/nginx/domain2_error.log
  • Tools wie tail -f, GoAccess oder ELK Stack für Analyse

Netzwerk und Subnetze

Eine saubere Netzwerkarchitektur erleichtert den Betrieb mehrerer Domains auf einem Server und die Analyse von Zugriffen.

Subnetzberechnung

Beispiel: Server-IP 10.4.1.15/24

<math>
Subnetzadresse = 10.4.1.15 & 255.255.255.0 = 10.4.1.0
Broadcastadresse = 10.4.1.0 | ~255.255.255.0 = 10.4.1.255
</math>

Netzwerkinterface konfigurieren

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

Best Practices

  • Separate Webroot-Verzeichnisse für jede Domain
  • Eigene Access- und Error-Logs pro Server Block
  • HTTPS für alle Domains aktivieren
  • Regelmäßige Backups der Konfigurationen und Webinhalte
  • DNS-Einträge prüfen und testen
  • Serverressourcen überwachen, um Überlastungen zu vermeiden
  • Logrotate für Logs pro Server Block einrichten
  • Security Header (HSTS, CSP, X-Frame-Options) pro Server Block konfigurieren

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