NGINX Reverseproxy für Weiterleitung auf anderes HTTPS-Ziel

Ich hatte konkret die Aufgabe, verschiedene Webserver unter einer externen IP-Adresse erreichbar zu machen. Die Webserver verfügen bereits über ein eigenes HTTPS-Zertifikat – ich muss mich als nicht noch um Zertifikate wie Let’sEncrypt etc. kümmern.
Im konkreten Beispiel habe ich für diesen Zweck ein einfaches Ubuntu Server 18.04 LTS aufgesetzt und in meiner DMZ aufgestellt mit dem Ziel, dort nichts weiter als diesen konkreten NGINX darauf laufen zu lassen.

Nach der Installation von Linux erfolgen wie immer die üblichen Befehle zum Aktualisieren des Betriebssystems

sudo apt update
sudo apt full-upgrade

NGINX wird mit einer weiteren einfachen APT-Zeile angestoßen:

sudo apt-get install nginx

Um zu konfigurieren, dass NGINX automatisch zum Systemstart mitgestartet wird, geben wir folgenden Befehl ein:

sudo /etc/init.d/nginx start

Jetzt könnt ihr den NGINX-Webserver einfach testen durch Aufrufen der entsprechenden IP-Adresse im Browser. In meinem konkreten Fall war das die nachfolgende IP-Adresse

http://192.168.140.16

Ziel ist es in diesem konkreten Fall, eine Weiterleitung von HTTPS auf HTTPS zu konfigurieren.
Dafür muss das SSL-Zertifikat vorhanden sein und in die folgenden Dateien kopiert werden:
public Key:
sudo vim /etc/nginx/cert.crt
Private Key
sudo vim /etc/nginx/cert.key

Anschließend ist es schon soweit – ihr könnt die Konfiguration des NGINX öffnen und die Proxy-PASS-Konfig einfügen. In meinem konkreten Beispiel sah das so aus

sudo vim /etc/nginx/sites-enabled/default
server {

    listen 443 ssl;
    server_name subdomain.domain.de;

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/jenkins.access.log;

    location / {

      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;

      # Fix the “It appears that your reverse proxy set up is broken" error.
      proxy_pass          https://192.168.140.10:443;
      proxy_read_timeout  90;

      proxy_redirect      https://192.168.140.10:443 https://git.gustini.de;
    }
  }

Abschließend noch ein Neustart von NGINX

 sudo service nginx restart

Anschließend hat die Lösung bei mir schon funktioniert!