Diese Anleitung setzt voraus, dass du bereits nginx auf einem Server installiert und eingerichtet hast.
Die IP-Adressen und Websitenamen in diesem Artikel sind rein fiktiv und dienen nur der Veranschaulichung!
Voraussetzung
Schauen wir uns zuerst die Voraussetzung an. Nehmen wir an, du hast deinen Reverse Proxy intern unter der IP-Adresse ‘192.168.2.5’ aufgesetzt und ihn extern unter der IP-Adresse ‘160.25.100.4’.
Du hast den Server so konfiguriert, dass er alle Anfragen unter “blog.pietstech.eu” (und zwar nur unter dieser Adresse) zu einem anderen Webserver weiterleiten soll. Ruft man deinen Reverse Proxy direkt über die IP auf, so soll eine Fehlermeldung angezeigt werden bzw. der Benutzer nicht an deinen Webserver weitergeleitet werden.
Problem
Wenn du deinen Server testest, wirst du merken, dass er nicht nur die Besucher von “blog.pietstech.eu” weiterleitet, sondern auch die, die deinen Server über seine IP-Adresse “160.25.100.4” aufrufen. Dies ist eine Standardkonfiguration von nginx und muss speziell deaktiviert werden!
Lösung
Die Lösung besteht darin, alle Anfragen, die an die IP-Adresse des Servers gesendet werden, zu blockieren und einen Fehler 404 zurückzugeben.
Verbinde dich dazu auf deinen Reverse Proxy und navigiere in das Verzeichnis, indem die nginx Konfiguration liegt. Der Standardpfad unter Ubuntu ist “/etc/nginx/”. In diesem Verzeichnis sollte es einen Ordner namens “conf.d” geben. Wechsel zum Ordner und erstelle eine neue Datei.
nano BeliebigerDateiname.conf
Port 80 Redirect blockieren
Füge anschließend folgenden Inhalt in deine Datei ein:
server {
listen 80;
server_name 192.168.2.5;
redirect 404;
}
server {
listen 80;
server_name 160.25.100.4;
redirect 404;
}
Schauen wir uns den Code einmal genauer an.
Der erste Block lauscht auf alle Anfragen unter Port 80, die an die interne IP unseres Servers geleitet werden. Anschließend werden diese Anfragen an einen 404 Error weitergeleitet.
Der zweite Block funktioniert genauso, nur das hier die externe IP-Adresse des Reverse Proxies eingetragen ist.
Port 443 Redirect blockieren
Möchstest du auch Port 443 (SSL/HTTPS) einschließen, musst du den Code um folgenden Bereich erweitern:
server {
listen 80;
listen 443;
server_certificate <Pfad zu deinem Zertifikat>;
server_certificate_key <Pfad zu deinem Private Key>;
server_name 192.168.2.5;
redirect 404;
}
server {
listen 80;
listen 443;
server_certificate <Pfad zu deinem Zertifikat>;
server_certificate_key <Pfad zu deinem Private Key>;
server_name 160.25.100.4;
redirect 404;
}
nginx überprüfen und neustarten
Anschließend kannst du nginx auf Konfigurationsfehler überprüfen.
nginx -t
Wenn alles OK ist und keine Fehler gefunden wurden, musst du nur noch nginx neustarten, damit deine Änderung auch greift.
nginx -s reload