Nginx auf Ubuntu 24.04 installieren und einrichten

Nginx ist ein kostenloser Open-Source-Webserver, mit dem du statische und dynamische Websites, Anwendungen oder Services ausliefern kannst. Unter Ubuntu lässt sich Nginx als klassischer Webserver, Load Balancer, Reverse Proxy oder HTTP-Cache einsetzen.

Diese Anleitung führt dich durch die Installation von Nginx auf Ubuntu 24.04 und zeigt, wie du Beispiel-Webanwendungen so einrichtest, dass sie auf deinem Server zuverlässig und performant laufen.

Voraussetzungen

Bevor du startest:

  • Stelle eine Ubuntu-24.04-Instanz bei centron bereit.
  • Lege einen neuen Domain- oder Subdomain-A-Record an, der auf die IP-Adresse deines Servers zeigt. Zum Beispiel app.example.com.
  • Verbinde dich per SSH mit dem Server und erstelle einen Nicht-Root-Benutzer mit sudo-Rechten.
  • Aktualisiere den Server.

Nginx auf Ubuntu 24.04 installieren

Das aktuelle Nginx-Paket ist in den Standard-APT-Repos von Ubuntu 24.04 enthalten. Nutze die folgenden Schritte, um die Paketlisten zu aktualisieren und den Nginx-Webserver zu installieren.

Paketindex aktualisieren

Aktualisiere den Paketindex des Servers.

Nginx installieren

Installiere Nginx.

$ sudo apt install nginx -y

Installierte Version prüfen

Zeige die installierte Nginx-Version auf deinem Server an.

Deine Ausgabe sollte in etwa wie folgt aussehen:

nginx version: nginx/1.24.0 (Ubuntu)

Nginx-Systemdienst verwalten

Nginx nutzt einen systemd-Dienst namens nginx, um Laufzeit und Worker-Prozesse zu steuern. Mit den folgenden Schritten aktivierst und verwaltest du den Dienst auf deinem Server.

Nginx beim Booten aktivieren

Sorge dafür, dass der Nginx-Webserver beim Systemstart automatisch startet.

$ sudo systemctl enable nginx

Ausgabe:

Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable nginx

Nginx starten

Starte den Nginx-Dienst.

$ sudo systemctl start nginx

Nginx stoppen

Stoppe den Nginx-Dienst.

$ sudo systemctl stop nginx

Nginx neu starten

Starte den Nginx-Dienst neu.

$ sudo systemctl restart nginx

Status des Dienstes prüfen

Zeige den Status an und überprüfe, ob Nginx läuft.

$ sudo systemctl status nginx

Ausgabe:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-06-26 10:55:50 UTC; 1min 0s ago
       Docs: man:nginx(8)
    Process: 2397 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 2399 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 2400 (nginx)
      Tasks: 2 (limit: 1068)
     Memory: 1.7M (peak: 2.4M)
        CPU: 13ms
     CGroup: /system.slice/nginx.service
             ├─2400 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─2401 "nginx: worker process"

Wenn dort Active: active (running) steht, läuft Nginx korrekt. Falls der Status Active: active (failed) anzeigt, beende andere Prozesse auf Port 80 und starte den nginx-Dienst anschließend neu.

Einen neuen Nginx Virtual Host erstellen

Mit Nginx-Virtual-Hosts kannst du Anwendungsdateien aus einem eigenen Verzeichnis unter einer bestimmten Domain bereitstellen. Die folgenden Schritte zeigen eine Beispiel-Konfiguration, um eine einfache Web-App sicher zu veröffentlichen.

Virtual-Host-Konfiguration anlegen

Erstelle eine neue Virtual-Host-Datei im Verzeichnis /etc/nginx/sites-available, z. B. app.example.com.conf.

$ sudo nano /etc/nginx/sites-available/app.example.com.conf

Füge die folgenden Einstellungen in die Datei ein.

server {
        listen 80;
        listen [::]:80;

        server_name app.example.com;

        root /var/www/app.example.com;
        index index.html;

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

Speichere die Datei und schließe den Editor.

Diese Konfiguration lauscht auf deine Domain app.example.com und liefert Dateien aus dem Verzeichnis /var/www/app.example.com aus.

Konfiguration testen

Prüfe die Nginx-Konfiguration auf Fehler.

Ausgabe:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Virtual Host aktivieren

Verlinke die Konfiguration nach /etc/nginx/sites-enabled, um den Virtual Host zu aktivieren.

$ sudo ln -s /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/

Web-Root-Verzeichnis erstellen

Lege das Web-Root-Verzeichnis /var/www/app.example.com an, in dem deine Anwendungsdateien liegen.

$ sudo mkdir -p /var/www/app.example.com

Beispiel-HTML-Seite hinzufügen

Erstelle im Verzeichnis eine HTML-Datei, z. B. index.html.

$ sudo nano /var/www/app.example.com/index.html

Füge den folgenden HTML-Inhalt ein.

Speichere die Datei und schließe den Editor.

Wenn du die Seite im Browser öffnest, siehst du die Überschrift „Greetings from centron“.

Nginx neu starten und Zugriff testen

Starte Nginx neu, damit die neue Virtual-Host-Konfiguration aktiv wird.

$ sudo systemctl restart nginx

Rufe deine Domain auf und überprüfe, ob Nginx die Web-App korrekt ausliefert. Du kannst dafür z. B. Curl nutzen.

$ curl http://app.example.com

Ausgabe:

Nginx-Webserver mit SSL absichern

SSL-Zertifikate verschlüsseln die Verbindung zwischen Browser und Nginx-Server per HTTPS. Standardmäßig nimmt Nginx Anfragen über den ungesicherten HTTP-Port 80 an. Mit den folgenden Schritten erzeugst du vertrauenswürdige Let’s-Encrypt-Zertifikate und aktivierst HTTPS.

Certbot installieren

Installiere den Let’s-Encrypt-Client Certbot über Snap.

$ sudo snap install --classic certbot

Certbot-Version prüfen

Lass dir die installierte Certbot-Version anzeigen.

Ausgabe:

SSL-Zertifikat erstellen

Erstelle ein neues SSL-Zertifikat für deine Domain. Ersetze app.example.com durch die Domain aus deiner Virtual-Host-Konfiguration.

$ sudo certbot --nginx -d app.example.com --agree-tos

Firewall-Regeln einrichten

Ubuntu 24.04 bringt UFW (Uncomplicated Firewall) standardmäßig aktiv mit. Mit den folgenden Regeln erlaubst du HTTP- und HTTPS-Zugriffe für Nginx.

HTTP erlauben

Erlaube eingehende Verbindungen auf Port 80.

HTTPS erlauben

Erlaube eingehende Verbindungen auf Port 443.

UFW-Regeln prüfen

Zeige die UFW-Regeltabelle an und kontrolliere, ob die neuen Regeln aktiv sind.

Ausgabe:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)

Fazit

Du hast Nginx auf Ubuntu 24.04 installiert und so konfiguriert, dass Webanwendungen über deinen Server ausgeliefert werden. Nginx unterstützt mehrere Virtual-Host-Konfigurationen, mit denen du verschiedene Apps unter eigenen Domains sicher bereitstellen kannst. Außerdem lässt sich Nginx mit Diensten wie MySQL und PHP kombinieren, um dynamische Webanwendungen bereitzustellen. Weitere Optionen und Einstellungen findest du in der offiziellen Nginx-Dokumentation.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren:

Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

TensorRT und ONNX: High-Performance-ML auf NVIDIA-GPUs

AI/ML, Tutorial
VijonaHeute um 12:58 Uhr Machine-Learning-Frameworks, Modell-Tools und Deployment-Strategien in der ML-Pipeline Machine-Learning-Frameworks, spezialisierte Modell-Tools und Deployment-Lösungen übernehmen jeweils unterschiedliche Aufgaben innerhalb eines Machine-Learning-(ML)-Workflows. In jeder Phase – von der Modellerstellung über…