User Tools

Site Tools


user:jan001:nigdocu:nginx

Nginx Proxy

Um die Environments alle unter einer URL erreichbar zu machen wird ein Reverse Proxy benötigt. Ein reverse Proxy nimmt Anfragen an einem Knotenpunkt an und verteilt diese intern auf andere Punkte. Dies kann auch zum Loadbalancing benutzt werden.

Bei den NIGs wird eine Funktion der nginx-Konfiguration benutzt, die ermöglicht Konfigurations-Snippets aus anderen Dateien in eine andere Konfigurationsdatei einzufügen. Diese heißt “include”. Eine so referenzierte Datei wird eins zu eins übernommen. In der Hauptkonfigurationsdatei von nginx werden alle Konfigurationsdateien aus dem Ordner sites-available inkludiert. In diesem Ordner liegen üblicherweise die Konfigurationsdateien für einzelne URLs. In unserem Fall lediglich “eolab.de”. In dieser Konfigurationsdatei werden die einzelnen Endpunkte des Reverse Proxy definiert. Diese heißen dann “server”. Der Endpunkt für die NIGs ist wie folgt konfiguriert:

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name nig.eolab.de;

  ssl_certificate /etc/letsencrypt/live/nig.eolab.de-0001/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/nig.eolab.de-0001/privkey.pem;
  include snippets/ssl-params.conf;

  include /etc/nginx/nigs/*.conf;
}

Zunächst wird definiert auf welchem Port der Server lauschen soll. Sowohl IPv4, als auch IPv6. Der sever_name ist in dem Fall die URL des Servers. Danach werden noch SSL-Zertifikate geladen, sowie SSL-Parameter aus einer anderen Datei. Die letzte Zeile ist die wichtigste für NIGs. Da include Wildcards unterstützt können alle Konfigurationsdateien aus dem Ordner importiert werden. Dies ermöglicht auf einfache Weise NIGs hinzuzufügen und zu entfernen ohne die wichtige Konfigurationsdatei zu modifizieren. Die Dateien die inkludiert werden aus folgendem Template erstellt:

location /{{ROOT}}/grafana/ {
        proxy_pass http://localhost:{{GRAFANA_PORT}}/;

        proxy_http_version 1.1;

        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_set_header X-Forwarded-Proto  $scheme;
}

location /{{ROOT}}/node-red {
        proxy_pass http://localhost:{{NODERED_PORT}};
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
}

In diesem Fall werden die Locations genutzt um diese intern auf die jeweiligen Docker Container verweisen zu lassen. Die weiteren Proxy Settings sind entweder allgemein als Standard anerkannt oder aus der jeweiligen Dokumentation entnommen. Das

{{ROOT}}

wird vom newNIG.sh script ersetzt durch die Variable ROOT.

user/jan001/nigdocu/nginx.txt · Last modified: 2023/01/05 14:38 by 127.0.0.1