Reverse Proxy auf dem Raspberry Pi mit Nginx

Virtuelle Server

Momentan arbeitet Nginx noch als reiner Webserver, der eine statische HTML-Seite ausliefert. Um Client-Anfragen via Reverse Proxy an die richtige Stelle weiterzuleiten, definieren Sie nun mithilfe der Anweisung server_name verschiedene virtuelle Server und mittels der Direktive proxy_pass deren Zieladressen. Das Beispiel aus Listing 11 ermöglicht den Zugriff auf eine Fritzbox mit der lokalen IP-Adresse 192.168.0.10 und der URL http://http(s)://fritzbox.raspi.

Listing 11

 

# nginx-05.conf
[...]
http {
  [...]
  server {
    listen 443 ssl;
    server_name fritzbox.*;
    location / {
      proxy_pass http://192.168.0.10;
    }
  }
}

Um diese Konfiguration im lokalen Netzwerk testen zu können, müssen Sie den Hostnamen fritzbox.raspi der IP-Adresse des Raspberry Pi zuordnen, zum Beispiel über einen weiteren Eintrag in der Hosts-Datei. Dabei handelt es sich quasi um die "lokale Wildcard-Unterstützung", die Sie später für den Fernzugriff über das Internet ebenfalls benötigen und die, wie bereits eingangs erwähnt, der genutzte DynDNS-Service unterstützen muss.

Nach demselben Schema lassen sich nun auch alle weiteren Geräte und Dienste in die Konfiguration einbinden, wozu Sie jeweils nur den server_name und die Zieladresse anpassen. Um etwa die webbasierte Terminalanwendung Shell In A Box [9] über die URL http://http(s)://shell.raspi zu erreichen, tragen Sie server_name shell.*; und proxy_pass https://127.0.0.1:4200; in die Konfiguration ein.

Um die Konfigurationsdatei etwas übersichtlicher zu gestalten, erstellen Sie ein Verzeichnis /usr/local/nginx/conf/sites-available/ und lagern die einzelnen server-Blöcke jeweils in dort gelagerte separate Dateien aus. Für diese vergeben Sie zur leichteren Orientierung dann sprechende Namen wie etwa fritzbox.conf oder shellinabox.conf. In einem weiteren Ordner /usr/local/nginx/conf/sites-enabled/ erstellen Sie dann Verknüpfungen zu diesen Dateien – ein Beispiel zeigt Listing 12 – und binden diese in der Konfigurationsdatei im http-Kontext mit include sites-enabled/*; ein (Listing 13).

Listing 12

 

$ sudo ln -s /usr/local/nginx/conf/sites-available/fritzbox.conf /usr/local/nginx/conf/sites-enabled/fritzbox

Listing 13

 

# nginx-06.conf
worker_processes 1;
events {
  worker_connections 1024;
}
http {
  # HTTP Basic Authentication
  auth_basic "NGINX";
  auth_basic_user_file .htpasswd;
  # SSL
  ssl_certificate ssl/server.crt;
  ssl_certificate_key ssl/server.key;
  # ausgelagerte server-Blöcke
  include sites-enabled/*;
}

Fernzugriff

Damit Sie Ihre Nginx-Installation auch via Internet erreichen können, müssen Sie auf dem Router noch Freigaben für die Ports 80 und 443 einrichten (Abbildung 4). Als Zieladresse geben Sie dabei die IP-Adresse des Raspberry Pi an. Der Zugriff auf das Heimnetzwerk erfolgt über den DynDNS-Anbieter: Der DynDNS-Dienst kennt die aktuelle öffentliche IP-Adresse des Routers und macht diesen über einen eindeutigen Hostnamen erreichbar. Beim Aufruf erkennt Nginx anhand der Subdomain, welcher server-Kontext zum Zug kommen soll.

Abbildung 4: Um den Zugriff aus dem Internet zu ermöglichen, richten Sie auf dem Router noch entsprechende Portfreigaben ein.

Für das Aktualisieren der IP-Adresse stellen viele DynDNS-Anbieter eine Update-URL zur Verfügung, die sich in vielen Routern direkt verwenden lässt. Können Sie diese in Ihrem Fall nicht nutzen, etwa weil Sie den Router hinter einem Kabelmodem betreiben, rufen Sie die Update-URL über einen Cronjob auf. Der Crontab-Eintrag aus Listing 14 führt das Update bei DDNSS alle 30 Minuten aus. Den Update-Key finden Sie auf der Startseite Ihres Admin-Bereichs.

Listing 14

 

*/30 * * * * wget -O /dev/null "https://www.ddnss.de/upd.php?key=12345&host=all" > /dev/null 2>&1

DDNSS erlaubt 60 Updates täglich, also eine Aktualisierung alle 24 Minuten. Um schneller auf IP-Wechsel zu reagieren, stoßen Sie das Update nur dann gezielt an, wenn sich die Adresse auch tatsächlich geändert hat. Dazu setzen Sie ein Skript wie in Listing 15 ein, das Sie via Cron in beliebiger Frequenz ausführen können.

Listing 15

 

#!/bin/bash
HOSTNAME="mynetwork.ddnss.de"
echo -$(date "+%d.%m.%Y, %R")-
MYIP=$(curl -s http://icanhazip.com)
echo "MYIP:  $MYIP"
DNSIP=$(dig +short $HOSTNAME)
echo "DNSIP: $DNSIP"
if [ "$MYIP" != "$DNSIP" ]; then
  curl -s "https://ddnss.de/upd.php?key=12345&host=all" | sed -n '7p'
fi

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

02/2018
Digital Signage

Diese Ausgabe als PDF kaufen

Preis € 7,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Neues auf der Heft-DVD

    Nur mit dem optimalen System und der richtigen Software nutzen Sie das volle Potenzial des Raspberry Pi. Mit der Heft-DVD erhalten Sie nicht nur die neusten Distributionen für den RasPi und Co., sondern gleichzeitig auch die passenden Programme zu den Artikeln.

  • Ferngebootet

    Das Booten über das Netzwerk beherrscht auch der RasPi 3 – und bietet damit sehr viel mehr Flexibilität, als Sie mit SD-Cards erzielen können.

  • Bleibende Werte

    Ein EEPROM dient dazu, Daten auch nach Abschalten der Energiezufuhr zu speichern, etwa als Kanalspeicher in Autoradios. Wir zeigen, wie Sie einen solchen Speicher beschreiben und wieder auslesen.

  • Auf Wolke 1

    Mit einem schnellen Netzwerkanschluss und einer SATA-Schnittstelle dient sich der Odroid HC1 als NAS-Alternative an – allerdings nicht für jedermann.

  • Wohnungsfunker

    Der kompakte Router GL.iNet dockt problemlos am Raspberry Pi an und erweitert diesen um einen Access Point samt Server-Funktion.

  • Satter Sound

    Mit zwei ICs am I2S-Bus und ein paar zusätzlichen Bauteilen erweitern Sie den Raspberry Pi um eine Soundkarte, die keine Kontaktmöglichkeit mit gängigem HiFi-Equipment scheut – von Klinke und RCA bis IEC60958, Koax-S/PDIF oder optischem TOSLINK.

  • Wer klopfet an?

    Wechselsprechanlagen mit Bild- und Tonübertragung gibt es zwar von der Stange, allerdings zu gesalzenen Preisen. Günstiger und obendrein flexibler ist ein Eigenbau mit Pi Zero und RasPi 3.

  • Wiedergeburt

    Mit dem Keyrah-Tastaturadapter und einem Raspberry Pi machen Sie aus einem defekten C64 eine optimale Emulator-Station, bei der Sie die originale Tastatur und die Joystick-Ports nutzen.

  • Kleine Nachtmusik

    Waveform8 beseitigt einige Ecken und Kanten des Vorgängers Tracktion – und macht die DAW endgültig fit für den Einsatz auf dem Raspberry Pi.

  • Recycling

    Mit einer Dockingstation lassen sich ausgemusterte IDE/SATA-Festplatten im 2,5- und 3,5-Zoll-Format am Raspberry Pi betreiben. Mit dem Samba-Server gliedern Sie den Mini-Rechner dann als Datenspeicher in Ihr lokales Netzwerk ein.