teil 3 – raspi als reverse-proxy mit nginx

Änderungsstand: 2020-04-21

Anfängerguide, um schrittweise Fuss zu fassen.

Teil 3) Ersellen eines Reverse-Proxy mit NginX auf einem separaten RaspberryPi 3B+, um die verwendeten Systeme, sauber getrennt voneinender, zu betreiben.

Sehr kurze Erklärung. Was ist ein Reverse Proxy?

Ein Reverse Proxy leitet Internetanfragen an den eigentlichen Webserver (bei mir auf einen gesonderten Webserver im Lan) weiter. Dadurch ist mein Webserver vor direkten Angriffen weitgehend geschützt, da Anfragen immer auf den Reverse-Proxy landen. Natürlich ist mit dieser einfachen Konfiguration der Aufruf des Webservers, intern, auch direkt möglich, aber das könnte auch geändert werden. Doch vorerst die einfache Konfiguration, um das System kennenzulernen.

Installation des Webservers auf dem Raspi:

Der erste Befehl dient nur zur Sicherheit, falls versehentlich Webdienste mit installiert wurden.

sudo apt-get remove apache2 
sudo apt-get install nginx 
sudo systemctl start nginx 

Somit wäre der eigentliche Webserver installiert und startet auch automatisch mit, sobald der Raspi gestartet wird. Mit der IP des Reverse-Proxy im Browser erhält man dann schon mal die Willkommensseite des NginX.

Jetzt grobe Erklärungsversuche zur Konfiguration von NginX.

etc/nginx/sites-available: Hier sind die Konfigurationsdateien zu finden und werden dort auch angelegt.

etc/nginx/sites-enabled: Hier sind die Verlinkungen der angelegten, zu verwendeten Konfigurationsdateien zu finden. Alles was in diesem Ordner verlinkt ist, ist für NginX aktiv.

Meine verwendeten Ports, IP’s und Domain für diesen Guide:

  • 192.168.252.225 (Mein Raspi Reverse-Proxy Server)
  • reverse-proxy (angelegter Hostname des RaspberrysPi)
  • 192.168.252.118:8080 (Mein Server, der später eine Website enthält (NginX Webserver))
  • webserver (angelegter Hostname meines Webservers)
  • 80 zu 80 zu 80 – (http – Portfreigabe Router zum Raspi Reverse-Server)
  • 443 zu 443 zu 443 – (https – Portfreigabe Router zum Raspi Reverse-Server)
  • 80 – NginX Reverse-Proxy (http)
  • 443 – NginX Reverse-Proxy (https)

Jetzt können wir schon einmal die Portfreigabe im Router setzen. Ich erkläre das hier kurz am Beispiel einer FritzBox! 7590.

Einfache Konfiguration des Reverse-Proxy:

cd /etc/nginx/sites-available/

Jetzt eine Konfigurationsdatei erstellen. Diese bekommt bei mir immer den Namen der zuständigen Domain, damit ich später alles einfacher nachvollziehen kann und mich nicht durch hunderten von Zeilen Code durchwühlen muss, nur weil vielleicht eine minimale Änderung von Nöten ist. Ich werde in den jeweiligen Scripten, für die wichtigsten Sachen, Kommentare setzen. Wie immer gilt, dass die Grün-Makierten Sachen durch Eure eigenen Werte ersetzt werden müssen. Da ich erst einmal den Proxy für den internen Betrieb bereit mache, nenne ich die Config-Datei proxyconfig-intern.

sudo nano /etc/nginx/sites-available/proxyconfig-intern.conf
server {
        listen 80;
        location / {
# Hostname des Webservers mit dazu verwendetem Port (IP:Port geht auch)
            proxy_pass http://webserver:8080;
        }
}

STRG-x, y, Enter

Jetzt eine Verlinkung der eben erstellten Datei zu sites-enabled:

sudo ln -s /etc/nginx/sites-available/proxyconfig-intern.conf /etc/nginx/sites-enabled/proxyconfig-intern.conf
sudo nginx -t

Werden keine Fehler angezeigt, dann:

sudo systemctl reload nginx

Der Reverse-Proxy lauscht nun auf Anfragen von Port 80 (der Aufruf der IP-Adresse des Proxy-Servers im Browser genügt da schon). Der Aufruf der IP-Adresse des Proxy-Server leitet der Proxy weiter und die Willkommensseite auf dem Webserver wird angezeigt. Oder die schon eingerichtete Website. Allerdings alles noch unverschlüsselt und alles nur intern. Als Vorraussetzung sollte ein konfigurierter Webserver vorhanden sein, um die gemachten Einstellungen zu testen.

Somit wäre die Grundinstallation beendet und ein sehr einfacher, funktionierender Proxy-Server wurde erstellt.

.

Teil 4 – Reverse-Proxy und Let’s Encrypt