Nginx Anleitung · 16 min read · Jan 24, 2026
Ein Leitfaden zum Ausführen eines Reverse-Proxys für HTTP(S), SSH und MySQL/MariaDB mit NGINX

Dieser Leitfaden führt Sie durch die Installation und Konfiguration von NGINX, um mehrere physische Server, virtuelle Maschinen oder eine Kombination aus beidem hinter einer einzigen öffentlich zugänglichen IP-Adresse zu betreiben. Sie können entscheiden, eine Reihe von Webservern auf virtuellen Maschinen auszuführen und diese lokal zu verwalten, oder Sie müssen möglicherweise Remote-Access-Tools wie SSH für jeden der Hosts verwenden. Zum Beispiel, wenn der lokale Zugriff außerhalb der normalen Geschäftszeiten nicht verfügbar ist. Dieser Leitfaden kann beide Szenarien erleichtern.
Die hier gezeigten Konfigurationen eignen sich am besten für ein Heimlabor oder ein kleines Unternehmensnetzwerk, das Einschränkungen bei den verfügbaren öffentlichen IP-Adressen hat. Es wäre wenig sinnvoll, eine solche Konfiguration zu verwenden, wenn Sie mehrere Server oder virtuelle Maschinen von einem Hosting-Dienst gemietet haben, da Ihnen ohnehin eine öffentlich zugängliche IP-Adresse für jeden Server oder Host zugewiesen wird.
Ich werde Ihnen zeigen, wie Sie NGINX installieren und Konfigurationen vornehmen, die es dem Server ermöglichen, als Reverse-Proxy für HTTP(S), SSH, FTP und MySQL/MariaDB zu fungieren. Ich gehe davon aus, dass Sie für den NGINX-Host-Server: lokalen Zugriff, eine frische Installation von Ubuntu 18.04 haben und dass Sie während der Installationsschritte des Ubuntu-Servers den SSH-Server installiert haben.
Diese Konfiguration funktioniert gut für mich, aber bitte verstehen Sie, dass ich keine Garantie geben kann, dass dies auch für Sie funktioniert. Natürlich, wenn Sie etwas Falsches finden, lassen Sie es mich wissen, damit es korrigiert werden kann. Bitte stellen Sie sicher, dass Sie den gesamten Leitfaden lesen, bevor Sie beginnen. Es gibt einen Teil (Streams), in dem ich zwei Möglichkeiten zeige, wie man damit umgeht.
Erste Schritte
In diesem Leitfaden werde ich die folgenden Hostnamen und IP-Adressen verwenden.
rproxy.example.com 192.168.1.1
web1.example.com 192.168.1.2
db1.exmple.com 192.168.1.3Sie sollten ein Nicht-Root-Benutzerkonto auf dem Server für eine Standardinstallation von Ubuntu 18.04 haben, das Sie während der Installation erstellt haben. Beginnen Sie, indem Sie sich mit diesem Benutzer auf dem Server anmelden, auf dem Sie NGINX installieren werden. Da dies höchstwahrscheinlich ein lokaler Server ist, müssen Sie sich möglicherweise beim ersten Mal direkt am Server anmelden, um den SSH-Server zu konfigurieren. Sie benötigen natürlich eine Tastatur und einen Monitor, die an den Server angeschlossen sind, um dies zu tun.
Hinweis: Wenn Sie wie ich Virtualisierungssoftware wie VMWare verwenden, die eine Browseroberfläche enthält, sollten Sie eine Konsole innerhalb dieses Systems haben und diesen Schritt ohne “direkten” Zugriff durchführen können. Sie könnten versuchen, diese gesamte Konfiguration innerhalb dieser Konsole durchzuführen, jedoch habe ich festgestellt, dass einige Funktionen wie Kopieren und Einfügen in der browserbasierten Konsole nicht funktionierten, obwohl dies browserabhängig sein könnte, sodass es sich lohnen könnte, zu versuchen, ob Sie es können.
Vorbereitung des Host-Servers
In Ihrer Konsolenshell (Browser oder direkt verbunden)
sudo nano /etc/ssh/sshd_configKommentieren Sie die Zeilen aus: Port, ändern Sie die Portnummer in etwas wie 23456, ListenAddress und ändern Sie das in 0.0.0.0. Für diejenigen, die mit nano nicht vertraut sind, drücken Sie STRG + X, geben Sie y ein und drücken Sie dann die Eingabetaste. Dies speichert und schließt eine Datei. Wenn keine Änderungen an der Datei vorgenommen wurden, schließt STRG + X die Datei, ohne zur Speicherung aufzufordern. Sie werden zur Eingabeaufforderung zurückkehren.
Ich werde nicht auf die restlichen Einstellungen in dieser Datei eingehen, da dies bereits ein erheblich umfangreicher Leitfaden ist und es viele Leitfäden gibt, die Ihnen zeigen, welche Einstellungen Sie für eine Reihe von Dingen ändern sollten, wie z. B. die Verwendung von SSH-Schlüsseln und das Zulassen von Root-SSH-Logins. Diese Leitfäden finden Sie auch hier auf der HowtoForge-Website.
Nachdem die Änderungen abgeschlossen sind, müssen Sie den SSH-Server neu starten, damit die Änderungen wirksam werden. Ihr aktueller Login wird von diesem Neustart nicht betroffen.
systemctl restart sshÜberprüfen Sie, ob Sie sich von einem Terminal auf einem anderen Computer innerhalb Ihres lokalen Netzwerks über SSH anmelden können.
ssh [email protected] -p23456Halten Sie dieses Terminal offen, nachdem Sie sich erfolgreich über SSH angemeldet haben, und melden Sie sich von der Konsole/dem Server ab. Sie müssen es für den Rest dieses Leitfadens nicht mehr verwenden.
Von diesem Punkt an werden Sie Root-Befehle von Ihrem Terminal aus ausführen. Der nächste Befehl beseitigt die Notwendigkeit, nachfolgende Befehle mit sudo zu versehen.
sudo -sAktualisieren Sie die Apt-Paketdatenbank und aktualisieren Sie Ubuntu, um sicherzustellen, dass Sie die neuesten Pakete installiert haben.
apt update && apt -y upgradeSollten Sie während des Upgrades etwas sehen, das meldet, dass neue Kernel installiert werden, sollten Sie neu starten, sobald apt mit dem Upgrade fertig ist, um sicherzustellen, dass Sie an einem vollständig aktualisierten System arbeiten.
Festlegen des Hostnamens des Reverse-Proxy-Servers.
hostnamectl set-hostname rproxy.example.comWenn Sie einen virtuellen Server betreiben, haben Sie möglicherweise eine Datei namens cloud.cfg, die geändert werden muss, um den hier festgelegten Hostnamen zu erhalten. Der folgende Befehl zeigt entweder eine Datei mit Inhalten oder eine leere Seite an. Wenn Sie eine leere Seite sehen, können Sie einfach STRG + X drücken und diesen Schritt überspringen, da es nichts für Sie zu tun gibt.
nano /etc/cloud/cloud.cfgÄndern Sie die Zeile zur Beibehaltung des Hostnamens in true und schließen/speichern Sie die Datei.
Wenn Ihr System derzeit nur lokal ist, müssen Sie diesem Server zeigen, wo sich Ihre anderen Server/virtuellen Hosts befinden.nano /etc/hostsDie Hosts-Datei sieht nach den Änderungen ungefähr so aus, die IP-Adressen und Hosts sollten Ihrer eigenen Infrastruktur entsprechen.
127.0.0.1 localhost
127.0.1.1 rproxy.example.com
192.168.1.2 web1.example.com
192.168.1.3 db1.example.com
# Die folgenden Zeilen sind wünschenswert für IPv6-fähige Hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersInstallation von NGINX
apt install -y nginxNach der Installation sollten Sie Ihre NGINX-Version überprüfen. Es ist von größter Bedeutung, dass Sie eine Version 1.9 oder höher haben, um als Reverse-Proxy für SSH und MySQL/MariaDB zu fungieren.
nginx -vWie Sie sehen können, habe ich NGINX Version 1.14 installiert, die standardmäßig in Ubuntu 18.04 enthalten ist (10. Okt 2019)
nginx version: nginx/1.14.0 (Ubuntu)Vorbereitung von NGINX, um als Reverse-Proxy zu fungieren
Mit dieser Konfiguration werden Sie keine Websites direkt vom Reverse-Proxy-Host-Server bereitstellen. Sie werden eine neue Verzeichnisstruktur unter /etc/nginx/ erstellen. Dies bewahrt die Standard-NGINX-Konfigurationen, falls Sie diese Änderungen später zurücksetzen oder entscheiden möchten, dass Sie tatsächlich auch Websites direkt von diesem Host bereitstellen möchten. Es ist möglich, die Standardkonfiguration zusammen mit diesen Reverse-Proxy-Konfigurationen auszuführen. Wenn Apache2 jedoch auf demselben Server installiert ist, benötigt es alternative Ports, auf denen es hören kann, und Sie müssen die Websites, die diese Instanz von Apache2 bereitstellt, weiterhin umleiten.
Erstellen der Reverse-Proxy-Verzeichnisstruktur
cd /etc/nginx && mkdir rproxy && cd rproxy && mkdir http http/available http/enabled stream stream/available stream/enabledJetzt, da Sie die Struktur eingerichtet haben, können Sie mit der Erstellung der Konfigurationsdateien fortfahren. Ich verwende nano, aber Sie können den Editor verwenden, mit dem Sie sich wohlfühlen. Nano erstellt/aktualisiert die Dateien beim Speichern.
Bevor Sie fortfahren, öffnen Sie ein leeres Dokument auf Ihrem Computer oder nehmen Sie Stift und Papier, um die Ports, die Sie konfigurieren, zu notieren.Konfigurieren von Webserver-Reverse-Proxys (http)
Erstellen Sie die http-Konfigurationsdatei(en) für die Website(s) und passen Sie sie entsprechend an.
nano http/available/example.com.confKopieren Sie den Serverblock in die Seite, die im Terminal mit nano geöffnet wurde, und passen Sie sie entsprechend an.
# Notieren Sie sich die Ports 80 und 443
server {
server_name example.com www.example.com;
listen 80;
set $upstream 192.168.1.2;
location / {
proxy_pass_header Authorization;
proxy_pass http://$upstream;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 10000s;
proxy_redirect off;
}
}Konfigurieren von SSH-, MySQL/MariaDB-Reverse-Proxys (Stream)
Bevor Sie fortfahren, entscheiden Sie, was Sie nutzen möchten, pro Host oder pro Dienst. Pro Host erstellen Sie eine Konfiguration für jeden Host, was nützlich sein könnte, um die Einstellungen eines einzelnen Hosts schnell zu ändern. Pro Dienst haben Sie die Dienstports für alle Server in einer Datei für jeden, SSH, MySQL/MariaDB und FTP.
Verwendung von Konfigurationen pro Dienst
Fügen Sie die SSH-Konfigurationen hinzu.
nano stream/available/ssh.conf# Notieren Sie sich die Listenports
upstream web1-ssh {
server 192.168.1.2:22;
}
server {
listen 22002;
proxy_pass web1-ssh;
}
upstream db1-ssh {
server 192.168.1.3:22;
}
server {
listen 22003;
proxy_pass db1-ssh;
}
# Fügen Sie so viele upstream- und serverblockpaare hinzu, wie Sie für Ihre remote zugegriffenen SSH-Server benötigen.Fügen Sie die MySQL/MariaDB-Konfigurationen hinzu.
nano stream/available/db.conf# Notieren Sie sich die Listenports
upsteam db1-mysql {
server 192.168.1.3:3306;
}
server {
listen 33063;
proxy_pass db1-mysql;
}
# Fügen Sie so viele upstream/serverblockpaare hinzu, wie Sie für Ihre remote zugegriffenen MySQL/MariaDB-Server zu dieser Datei benötigen.Jetzt erstellen Sie die FTP-Reverse-Proxy-Konfigurationen.
nano stream/available/ftp.confupstream web1-ftp {
server 192.168.1.3:21
}
server {
listen 21002;
proxy_pass web1-ftp;
}
# Fügen Sie so viele upstream/serverblockpaare hinzu, wie Sie für Ihre remote zugegriffenen FTP-Server benötigen.Verwendung von Konfigurationsdateien pro Host
nano /etc/nginx/rproxy/stream/available/web1.example.com.conf# Notieren Sie sich die Listenports
upstream web1-ssh {
server 192.168.1.3:22;
}
server {
listen 22002;
proxy_pass web-ssh;
}
Erstellen der Hostdatei für db1.example.com
nano /etc/nginx/rproxy/stream/available/db1.example.com.conf# Notieren Sie sich die Listenports
upsteam db1-mysql {
server 192.168.1.3:3306;
}
server {
listen 33063;
proxy_pass db1-mysql;
}
upstream db1-ssh {
server 192.168.1.3:22;
}
server {
listen 22003;
proxy_pass db1-ssh;
}
Wie Sie sehen können, ist es ein wenig unorthodox. Sie verwenden öffentliche Ports auf nicht standardisierte Weise, wählen die Ports, die Sie benötigen, und leiten sie dann an NGINX weiter. Dies wäre normal, es sei denn, Sie verwenden jetzt einen anderen Port für jeden Dienst auf jedem Server, auf den Sie remote zugreifen möchten. Das bedeutet, dass Sie, um ein Beispiel für SSH zu verwenden, eine andere Portnummer für jeden SSH-fähigen Host 22 222 2222 22222 verwenden würden, die beispielsweise auf Port 22 auf vier verschiedenen Servern oder virtuellen Maschinen zeigt.
Dies ist nicht der Fall, wenn NGINX als Reverse-Proxy für Websites fungiert, solange NGINX eine Serverkonfiguration für eine Website definiert hat, funktioniert es korrekt mit nur den Ports 80 und 443, die an ihn weitergeleitet werden.
An diesem Punkt haben Sie wahrscheinlich erkannt, dass Sie einfach die HTTP-Schritte verwenden und die Stream-Schritte überspringen könnten, und stattdessen mehrere Ports für die verschiedenen Dienste an den entsprechenden Server/IP-Adresse weiterleiten könnten. In der Tat kann dies getan werden. Es würde jedoch eine weitere Komplexitätsebene hinzufügen und schwierig zu warten werden, da die Anzahl der Server zunimmt, da Sie möglicherweise die Standardports auf jedem Server für SSH, MySQL und FTP ändern müssen. Diese Konfiguration ist bereits komplex, dennoch könnte es getan werden, wenn Sie es wollten.
Die Verwendung eines Reverse-Proxys für diese Dienste auf die von mir gezeigte Weise verringert die Komplexität erheblich, indem sie einen einzigen Ort bereitstellt, um diese Konfigurationsänderungen vorzunehmen, und Sie müssten keine Änderungen an den Ports in Ihrer gesamten Infrastruktur vornehmen.
Als zusätzlichen Bonus zu dieser Konfiguration müssen die anderen Server in Ihrer Infrastruktur nur auf lokalen Schnittstellen und Standardports hören, wenn Sie dies bevorzugen. Sollten Sie lokal verwalten, können Sie die lokalen IP-Adressen und Standarddienstports verwenden, um auf die erforderlichen Dienste zuzugreifen, sodass Sie sich nicht auf Ihre Notizen beziehen müssen, um sich an die richtigen Ports zu erinnern. Sie müssen nur die IP-Adresse und die Anmeldeinformationen kennen.
Alles zusammenbringen
Um die NGINX-Reverse-Proxy-Konfigurationen zu verwenden, müssen Sie einige Änderungen an der Hauptkonfigurationsdatei vornehmen. Kommentieren Sie die aktuelle Include-Zeile im HTTP-Block aus (wenn Sie keine Websites direkt von NGINX bereitstellen).
cd /etc/nginx && nano nginx.confBeachten Sie die hervorgehobenen Teile unten, um zu bestimmen, was geändert werden muss.
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Grundlegende Einstellungen
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL-Einstellungen
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # SSLv3 ablegen, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Protokollierungseinstellungen
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip-Einstellungen
##
gzip on;
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascri$
##
# Virtuelle Host-Konfigurationen
##
include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*;
# Reverse-Proxy-HTTP-Konfigurationsdateien.
include /etc/nginx/rproxy/http/enabled/*.conf;
}
stream {
# Reverse-Proxy-Stream-Konfigurationsdateien.
include /etc/nginx/rproxy/streams/enabled/*.conf;
}
#mail {
# # Siehe Beispiel-Authentifizierungsskript unter:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
Aktivieren der Reverse-Proxy-Konfigurationen.
Zuerst aktivieren Sie alle HTTP-Konfigurationen.
ln -s /etc/nginx/rproxy/http/available/*.conf /etc/nginx/rproxy/http/enabledAktivieren Sie alle Stream-Konfigurationen.
ln -s /etc/nginx/rproxy/stream/available/*.conf /etc/nginx/rproxy/stream/enabledFühren Sie einen Test durch, um zu überprüfen, ob die Konfiguration von NGINX als Reverse-Proxy korrekt ist.
nginx -TIn der Ausgabe sollten Sie eine Erfolgsmeldung zusammen mit allen benutzerdefinierten Konfigurationen sehen, die Sie zuvor vorgenommen haben.
Starten Sie NGINX neu, um die Reverse-Proxy-Konfigurationen in Kraft zu setzen.
systemctl restart nginxÜberprüfen Sie, ob NGINX auf allen konfigurierten Ports lauscht. Überprüfen Sie anhand Ihrer Notizen, dass alle Ports in den Ergebnissen angezeigt werden.
netstat -tulpn | grep nginxDie Ausgabe sollte ungefähr so aussehen:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4964/nginx: master
tcp 0 0 0.0.0.0:22002 0.0.0.0:* LISTEN 4964/nginx: master
tcp 0 0 0.0.0.0:22003 0.0.0.0:* LISTEN 4964/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4964/nginx: master
tcp 0 0 0.0.0.0:33062 0.0.0.0:* LISTEN 4964/nginx: master
tcp 0 0 0.0.0.0:33063 0.0.0.0:* LISTEN 4964/nginx: master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 4964/nginx: master Öffnen des Servers für den Verkehr
Jetzt, da NGINX lauscht und bereit ist, als Reverse-Proxy für alle Verbindungen zu fungieren, die wir zulassen möchten, deaktivieren Sie vorübergehend UFW, während Sie die nächsten Schritte durchgehen. Es wird die Fehlersuche erleichtern, wenn etwas nicht richtig funktioniert.
ufw disableWeiterleiten von Ports
Leider kann ich Ihnen hier keine Anleitung geben. Sie müssen in das Handbuch Ihres Routers schauen oder Ihren Router online nachschlagen, um zu lernen, wie man dies macht. Zusammenfassend möchten Sie jedoch jeden der Ports, auf denen NGINX lauscht, an die NGINX-Hostmaschine weiterleiten. In meinem speziellen Router kann ich benutzerdefinierte “Anwendungen” einrichten.
Dies ermöglicht es mir, eine beliebige Anzahl von nicht zugewiesenen Ports oder Portbereichen der benutzerdefinierten Anwendung zuzuweisen, die dann entweder einer LAN-IP-Adresse oder einem bestimmten verbundenen Gerät zugewiesen wird, das durch seinen Hostnamen identifiziert wird. In jedem Fall bedeutet dies, dass ich alle Ports, die dieser benutzerdefinierten Anwendung zugewiesen sind, auf jeden Host in meinem Netzwerk umschalten kann, ohne alle Ports löschen und neu zuweisen zu müssen. Dies ist eine ausgezeichnete Option, und ich empfehle Ihnen dringend, einen Router zu wählen, der dies unterstützt.
Dieses kleine, aber unglaublich nützliche Feature in der Firewall meines Routers hat mich dazu veranlasst, einen zweiten Reverse-Proxy zu installieren, der die Konfigurationen meines aktiven Reverse-Proxys spiegelt. Ich habe ihn ausgeschaltet und kann ihn in weniger als 3 Minuten nach der Entdeckung hochfahren und die Ports auf ihn umschalten. Ich stelle mir vor, dass es professionelle Hosting-Unternehmen gibt, die Schwierigkeiten haben würden, diese Reaktionszeit für die Wiederherstellung nach einem Desaster zu erreichen, und all dies entstand aus dem Wunsch, mehrere Server in einem Heimnetzwerk zu betreiben.
Kostenloses Letsencrypt-SSL für den Reverse-Proxy-Server
Installieren Sie Certbot und das Certbot-NGINX-Plugin. Dieser Schritt wird hier durchgeführt, da Sie kein Zertifikat erstellen können, bis Sie funktionales DNS für alle in einem Zertifikat aufgeführten (Sub-)Domainnamen haben und in der Lage sind, eine Verbindung zur Domain über HTTP herzustellen. Indem Sie dies durchführen, nachdem Sie die Ports an den Reverse-Proxy weitergeleitet haben, dient es auch als zusätzlicher Test für Ihre Konfigurationen. Wenn das Zertifikat fehlschlägt, weil die Domain nicht erreicht werden kann, sehen Sie eine aussagekräftige Fehlermeldung in der Ausgabe.
Um sicherzustellen, dass Sie die neueste Certbot-Version erhalten, fügen Sie das Certbot-Repository hinzu, bevor Sie installieren. Ubuntu-Repositories sind oft eine Version oder mehr hinter einer Softwareversion, und Sie möchten wirklich die neuesten stabilen Versionen aller Ihrer Software, wenn Sie sie bekommen können.
add-apt-repository ppa:certbot/certbot
apt install -y certbot python-certbot-pluginMit installiertem Certbot und dem Certbot-NGINX-Plugin können Sie nun die Zertifikate für NGINX erstellen.
Dieser Befehl sollte für alle Domains und Subdomains wiederholt werden, für die Sie SSL bereitstellen möchten. Wenn dies das erste Mal ist, dass Sie Certbot ausführen, müssen Sie die Allgemeinen Geschäftsbedingungen akzeptieren.
certbot --nginx -d example.com -d www.example.comBeachten Sie, dass, wenn Sie ein funktionierendes Server-Setup mit SSL auf dem Upstream-Host haben, Sie sicherstellen müssen, dass die hier ausgewählten Optionen mit denen auf dem Host-Server übereinstimmen, insbesondere wenn Sie auf dem Upstream-Server zu HTTPS umleiten, sollten Sie dies auch hier tun.
Zur Klarstellung: example.com existiert auf einem anderen Server, und ich habe ausgewählt, HTTP auf HTTPS innerhalb von ISPConfig umzuleiten, daher wähle ich aus diesem Grund, dies hier zu tun. Die Konfigurationsdatei wird aktualisiert, und ich sehe jetzt, dass Certbot einige eigene Konfigurationen hinzugefügt hat.
Überprüfen, ob alles funktioniert.
Jetzt, da der Verkehr in Ihren Reverse-Proxy fließen kann, sollten Sie überprüfen, ob alles wie beabsichtigt funktioniert. Überprüfen Sie, ob Websites ordnungsgemäß funktionieren, führen Sie SSH-, FTP- und MySQL/MariaDB-Verbindungen und -Aufgaben durch. Sobald Sie zufrieden sind, dass alles wie es sollte funktioniert, aktivieren Sie UFW und fügen Sie Regeln hinzu, um jeden der Ports zuzulassen.
Absichern des Reverse-Proxy-Servers
ufw enableSie möchten 80 und 443 von überall zulassen und wahrscheinlich SSH, FTP und MySQL/MariaDB auf eine IP-Adresse oder einen Hostnamen beschränken. Sie können die Regeln kommentieren, um schnell zu identifizieren, welchem Dienst/Server Sie den Port zugewiesen haben.
ufw allow 80
ufw allow 443
ufw allow from 1.2.3.4 to any port 22002 comment 'web1 SSH'
ufw allow from somehost.domain.com to any port 33061 comment 'db1 MySQL/MariaDB'
ufw reload
ufw status numberedAktualisieren von Apache2
Wenn Sie hinter einem Reverse-Proxy arbeiten, werden die Apache2-Protokolldateien die IP-Adresse des Reverse-Proxy-Servers anstelle der IP-Adresse des Website-Besuchers aufzeichnen. Um die normale IP-Adressprotokollierung in Apache2 wiederherzustellen, ist ein Modul verfügbar, um dieses Verhalten zu korrigieren.
Führen Sie die folgenden Schritte auf jedem Webserver mit einer installierten Apache2-Instanz aus.
sudo apt install -y libapache2-mod-rpafUm sicherzustellen, dass Apache2 jetzt die richtigen IP-Adressen aufzeichnet, nehmen Sie eine kleine Änderung an der rpaf.conf-Datei vor. Ubuntu 18.04 hat die Datei bereits für uns erstellt, wir müssen sie nur bearbeiten und die hervorgehobene IP-Adresse in die des NGINX-Reverse-Proxy-Hosts ändern.
nano /etc/apache2/mods-available/rpaf.conf
RPAFenable On
# Wenn aktiviert, nehmen Sie den eingehenden X-Host-Header und
# aktualisieren Sie die virtuellen Host-Einstellungen entsprechend:
RPAFsethostname On
# Definieren Sie, welche IPs Ihre Frontend-Proxys sind, die
# die richtigen X-Forwarded-For-Header senden:
RPAFproxy_ips 127.0.0.1 ::1
# Ändern Sie den Headernamen, um vom Standard
# X-Forwarded-For auf etwas Ihrer Wahl zu parsen:
# RPAFheader X-Real-IP
Abschließende Hinweise
NGINX und Apache2 im selben Host
Keine zwei Dienste können auf demselben Port innerhalb eines Servers oder einer virtuellen Maschine lauschen. Wenn NGINX auf demselben Server oder in derselben virtuellen Maschine wie ein Apache2-Webserver installiert ist, müssen Sie den Port ändern, auf dem Apache2 lauscht. NGINX benötigt die Ports 80 und 443, um seine HTTP(S)-Funktionen auszuführen, da dies die Standardports für HTTP und HTTPS sind.
Verweisen Sie zurück auf den HTTP-Abschnitt dieses Leitfadens und fügen Sie Reverse-Proxy-Konfigurationen für Websites hinzu, die von dieser Apache2-Instanz auf die gleiche Weise bereitgestellt werden wie die anderen Server im Netzwerk.
Ändern des Apache2-Lauscherports
Wenn Sie ein Serververwaltungssystem wie ISPConfig installiert haben, verwaltet dieses System die Apache2-Vhost-Dateien, sodass Sie recherchieren sollten, wie Sie die Ports ändern, auf denen Apache2 lauscht. Suchen Sie in den ISPConfig-Foren und nehmen Sie dann die erforderlichen Anpassungen vor. Andernfalls sollten Sie in den Ubuntu-Foren oder auf der Apache2-Website nachsehen, wie Sie diese Änderungen vornehmen.
Hinweis: Apache2-Ports müssen nicht geändert werden, wenn es der einzige Webserver ist, der auf dem Server oder der virtuellen Maschine installiert ist.Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.