Wie man Nginx als Reverse Proxy auf Ubuntu 22.04 konfiguriert
Einführung für die Konfiguration von Nginx als Reverse Proxy
Ein Reverse Proxy ist die empfohlene Methode, um einen Anwendungsserver im Internet bereitzustellen. Egal ob Sie eine Node.js-Anwendung in der Produktion betreiben oder einen minimalen integrierten Webserver mit Flask verwenden, diese Anwendungsserver binden oft an localhost
mit einem TCP-Port. Das bedeutet, dass Ihre Anwendung nur lokal auf dem Computer zugänglich ist, auf dem sie sich befindet. Die Verwendung eines Reverse Proxys in der Produktion bietet Sicherheitsvorteile, zentralisierten Firewall-Schutz und eine minimierte Angriffsfläche für häufige Bedrohungen wie Denial-of-Service-Angriffe.
Dieses Tutorial zeigt, wie Sie einen Reverse Proxy mit Nginx einrichten. Sie installieren Nginx, konfigurieren es mit der proxy_pass
-Direktive und leiten Header aus Client-Anfragen weiter. Optional richten Sie eine Testanwendung mit dem WSGI-Server Gunicorn ein.
Voraussetzungen für die Konfiguration von Nginx als Reverse Proxy
Um dieses Tutorial abzuschließen, benötigen Sie:
- Einen Ubuntu 22.04-Server mit einem nicht-root sudo-fähigen Benutzer und einer Firewall. Folgen Sie unserem Leitfaden zur ersten Serverkonfiguration.
- Die Adresse des Anwendungsservers, den Sie proxen möchten, bezeichnet als
app_server_address
. Dies kann eine IP-Adresse mit einem TCP-Port oder ein Unix-Domain-Socket sein. - Einen Domainnamen, der auf die öffentliche IP Ihres Servers zeigt und mit Nginx konfiguriert ist, um Ihren Anwendungsserver zu proxen.
Schritt 1 — Nginx als Reverse Proxy installieren
Nginx kann mit apt
über die Standard-Repositories installiert werden. Führen Sie die folgenden Befehle aus:
sudo apt update
sudo apt install nginx
sudo ufw allow 'Nginx HTTP'
systemctl status nginx
Stellen Sie sicher, dass Nginx läuft und über die Firewall zugänglich ist.
Schritt 2 — Konfiguration Ihres Serverblocks
Erstellen Sie eine benutzerdefinierte Konfigurationsdatei für Ihre neuen Serverblock-Erweiterungen:
sudo nano /etc/nginx/sites-available/your_domain
Fügen Sie die folgende Konfiguration ein, wobei Sie your_domain
und app_server_address
ersetzen:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain;
location / {
proxy_pass app_server_address;
include proxy_params;
}
}
Speichern und schließen Sie die Datei, aktivieren Sie dann die Konfiguration:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Schritt 3 — Testen Ihres Reverse Proxys mit Gunicorn (Optional)
Falls Sie keinen Anwendungsserver haben, richten Sie Gunicorn zum Testen ein:
sudo apt update
sudo apt install gunicorn
nano test.py
Fügen Sie für die Konfiguration von Nginx als Reverse Proxy den folgenden Code in test.py
ein:
def app(environ, start_response):
start_response("200 OK", [])
return iter([b"Hello, World!"])
Starten Sie den Server:
gunicorn --workers=2 test:app
Navigieren Sie zu your_domain
in Ihrem Browser, um den Reverse Proxy zu testen.
Fazit zur Konfiguration von Nginx als Reverse Proxy
Mit diesem Tutorial haben Sie Nginx als Reverse Proxy konfiguriert, um den Zugriff auf Ihre Anwendungsserver zu ermöglichen, die sonst nur lokal zugänglich wären. Außerdem haben Sie das Weiterleiten von Anforderungsheadern konfiguriert. Für weitere Beispiele sehen Sie sich Tutorials zum Bereitstellen von Flask-Anwendungen mit Gunicorn und Nginx oder zum Ausführen einer Meilisearch-Frontend-Anwendung mit InstantSearch auf Ubuntu 22.04 an.