NGINX als Reverse Proxy ein­zu­set­zen, ist eine beliebte und smarte Wahl. Für die Ein­rich­tung in­stal­lierst du einfach NGINX, erstellst eine Kon­fi­gu­ra­ti­ons­da­tei und passt die Ser­ver­ein­stel­lun­gen an. Wenn du möchtest, kannst du das Ergebnis direkt mit Gunicorn über­prü­fen.

NGINX als Reverse Proxy unter Ubuntu 22.04: Schritt für Schritt

Ein Reverse Proxy sorgt für einen sicheren, flexiblen und ef­fi­zi­en­ten Webserver. Er agiert als Ver­mitt­ler zwischen Client und Webserver, ohne dass deine Besucher:innen etwas davon bemerken. NGINX ist hierfür eine ex­zel­len­te Lösung. Wir zeigen dir jetzt, wie du den Reverse Proxy unter Ubuntu 22.04 in­stal­lierst und kon­fi­gu­rierst.

Das brauchst du für die Ein­rich­tung

Bevor du mit dem NGINX Reverse Proxy unter Ubuntu 22.04 startest, stelle sicher, dass Folgendes be­reit­steht:

  • Ein ein­satz­be­rei­ter Ubuntu-Server
  • Die IP-Adresse oder der Unix Domain Socket deines Servers
  • Die Domain deines Servers
  • sudo-Rechte für den Ser­ver­zu­griff

NGINX als Reverse Proxy in­stal­lie­ren

Ak­tua­li­sie­re zuerst dein Re­po­si­to­ry über das Terminal, um die neuesten Pakete zu laden. Die In­stal­la­ti­on von NGINX erledigst du mit dem Befehl apt install. Nutze dafür diesen Code:

$ sudo apt update
$ sudo apt install nginx
bash

Bestätige den Vorgang mit [Y] und [Enter].

Danach passt du deine Firewall an, damit NGINX mit deinem Server kom­mu­ni­zie­ren kann. Füge die Ausnahme mit diesem Befehl hinzu:

$ sudo ufw allow 'Nginx HTTP'
bash

Prüfe nun kurz, ob alles glatt gelaufen ist:

$ systemctl status nginx
bash

Bei einer er­folg­rei­chen In­stal­la­ti­on sieht die Ausgabe so aus:

nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Active: active (running) since Mon 2024-06-24 06:52:46 UTC; 39min ago
         Docs: man:nginx(8)
    Main PID: 9919 (nginx)
        Tasks: 2 (limit: 2327)
      Memory: 2.9M
          CPU: 50ms
      CGroup: /system.slice/nginx.service
                 ├─9919 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
                 └─9920 "nginx: worker process"
bash

Kon­fi­gu­ra­ti­ons­da­tei erstellen und Server anpassen

Jetzt geht es an den Server-Block, um den NGINX Reverse Proxy optimal auf dein System ab­zu­stim­men. Erstelle mit dem Editor nano eine neue Kon­fi­gu­ra­ti­ons­da­tei. Ersetze dabei „ihre_domain“ durch deinen echten Do­main­na­men:

$ sudo nano /etc/nginx/sites-available/ihre_domain
bash

Füge den folgenden Inhalt in die Datei ein. Tausche die Platz­hal­ter „ihre_domain“ und „server_adresse“ gegen deine Domain sowie die IP oder den Unix Domain Socket deines Servers aus:

server {
    listen 80;
    listen [::]:80;
    server_name ihre_domain www.ihre_domain;
        
    location / {
        proxy_pass http://server_adresse;
        include /etc/nginx/proxy_params;
    }
}
txt

Speichere und schließe die Datei. Das ist das Standard-Setup von NGINX, das Port 80 für Anfragen nutzt. Die Kom­po­nen­te proxy_pass ist dabei das Herzstück für die Reverse-Proxy-Funktion. Du kannst bei Bedarf jederzeit weitere Server ergänzen.

Verknüpfe die Datei nun mit dem Ver­zeich­nis sites-enabled, damit NGINX darauf zugreifen kann. Nutze diesen Befehl (Platz­hal­ter wieder anpassen):

$ sudo ln -s /etc/nginx/sites-available/ihre_domain/etc/nginx/sites-enabled/
bash

Checke deine Kon­fi­gu­ra­ti­on auf even­tu­el­le Fehler:

$ sudo nginx -t
bash

Läuft alles feh­ler­frei? Dann starte den NGINX Reverse Proxy neu, um die Än­de­run­gen zu ak­ti­vie­ren:

$ sudo systemctl restart nginx
bash

Damit steht dein Reverse Proxy. Im nächsten Teil zeigen wir dir, wie du die Funktion testest – dieser Schritt ist optional.

NGINX Reverse Proxy mit Gunicorn testen

Um die Funktion zu prüfen, kannst du direkt deinen Server nutzen oder auf den kompakten HTTP-Webserver Gunicorn setzen. Dieser har­mo­niert perfekt mit NGINX. In­stal­lie­re ihn nach einem Paket-Update so:

$ sudo apt update
$ sudo apt install gunicorn
bash

Erstelle nun eine simple Test-Funktion für die HTTP-Antwort in deinem Browser via nano:

$ nano test.py
bash

Füge diesen Code in die Datei ein:

def app(environ, start_response):
	start_response("200 OK", [])
	return iter([b"Dies ist ein Test"])
txt

Nach dem Speichern und Schließen startest du Gunicorn und das Testmodul:

$ gunicorn --worker=2 test:app
bash

Die Be­stä­ti­gung im Terminal sieht etwa so aus:

[2024-06-24 07:09:29 +0000] [10568] [INFO] Starting gunicorn 20.1.0
[2024-06-24 09:14:37 +0000] [10568] [INFO] Listening at: http://127.0.0.1 (10568)
[2024-06-24 09:14:37 +0000] [10568] [INFO] Using worker: sync
[2024-06-24 09:14:37 +0000] [10569] [INFO] Booting worker with pid: 10569
[2024-06-24 09:14:37 +0000] [10570] [INFO] Booting worker with pid: 10570
bash

Das zeigt, dass Gunicorn unter der Adresse http://127.0.0.1:8000 aktiv ist. Öffne nun deinen Browser und steuere deine kon­fi­gu­rier­te Domain an. Dein NGINX Reverse Proxy sollte dich nun mit „Dies ist ein Test“ begrüßen.

Zum Hauptmenü