Mit Nginx Proxy Pass und SSL Anfrage an interne VM weiterleiten

MrOhlson

Cadet 3rd Year
Registriert
Okt. 2015
Beiträge
49
Hallo,

hab schon viel im Internet gesucht, aber bin mir immer noch nicht ganz sicher, wie die Konfigurationsdateien aussehen müssen. Folgendes Problem:

Ich hab einen dedizierten Server mit einer einzigen IP. Dort hab ich Proxmox installiert und nun eine Virtuelle Maschine mit Ubuntu 16.04 Server eingerichtet. Diese virtuelle Maschine hat zum Beispiel die IP: 192.168.4.2. Auf dem Proxmoxserver und in der VM laufen Nginx. Nun hab ich alles mir Proxy Pass entsprechend eingerichtet.

Proxmox Nginx:

Code:
server {
      listen 80;
      server_name beispiel.de;
      ...
      location / {
        proxy_pass http://192.168.4.2;
        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; 
     }
}

VM Nginx   

server {
      listen 80;
      server_name beispiel.de;
      ... 
}

Das funktioniert alles soweit. Allerdings wollte ich das ganze jetzt noch mit SSL von Letsencrypt verschlüsseln. Leider komme ich hier nicht weiter, weil ich nicht genau weiß, wie die Konfigurationsdatein aussehen müssen, damit das funktioniert. Ich würde gerne beispiel.de aufrufen und dann entsprechen die Seite beispiel.de mit https aus der VM aufrufen. Wie müssen die Konfigurationsdateien dann aussehen?

Viele Grüße

MrOhlson
 
Dein Dedizierter Server muss der sein, der SSL spricht. Das ist wie bei einem Load-Balancer.
Mit der "Node" bzw. der VM SSL zu sprechen ist Erderwärmung.

Also einfach den Server auf 443 stellen.

server {
listen 443 ssl;
server_name lala.de;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:EECDH:EDH:!MD5:!RC4:!LOW:!MEDIUM:!CAMELLIA:!ECDSA:!DES:!DSS:!3DES:!NULL;
ssl_prefer_server_ciphers on;
ssl_certificate /etc/nginx/nginx.crt;
ssl_certificate_key /etc/nginx/nginx.key;
usw...

Sollte gehen.
 
Moin

Zuerst musst du SSL/TLS aktivieren:
Code:
listen *:443 ssl;

Und dann brauchst du auf jeden Fall noch mindestens die folgenden Einträge:
Code:
ssl_certificate /path/to/certificate-with-intermediates;
ssl_certificate_key /path/to/private-key;

Damit kann dein nginx TLS gesicherte Verbindungen annehmen. Allerdings gibt es noch jede Menge weiterer Konfigurationsmöglichkeiten, die du dir anschauen solltest, damit du verstehst, was dein nginx treibt. Wichtig in dem Zusammenhang sind beispielsweise: ssl_dhparam, ssl_prefer_server_ciphers, ssl_protocols, ssl_ciphers
 
Hallo,

ich befürchte, dass ich es immer noch nicht ganz verstanden hab. Zusätzlich wollte ich gerne, dass http automatisch auf https umgeleitet wird. Ich hab die Konfigurationen jetzt folgendermaßen geändert:

Proxmox Nginx:

Code:
server {
listen 80;
server_name beispiel.de;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name beispiel.de;
...
ssl_certificate /pfad/zur/crt;
ssl_certificate_key /pfad/zum/key;
...
location / {
proxy_pass https://192.168.4.2;
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;
}
}

VM mit Nginx: (Hier bin ich mir nicht sicher, was ich eintragen muss)

Code:
server {
listen 80;
server_name beispiel.de;
...
}
//Wenn ich es so lasse funktioniert es, aber nur mit http

Viele Grüße

MrOhlson
 
Der Einfachheit halber solltest du schauen, ob du nicht einfach direkt zum nginx in der VM weiterleiten kannst (Portforwarding). Dann hast du einen Proxy weniger und damit auch eine Fehlerquelle weniger.

Ansonsten hast du im proxmox-nginx bei der listen-direktive das ssl vergessen (siehe mein Post). Und der proxy_pass zum vm-nginx darf natürlich nicht nach https gehen, wenn da kein ssl aktiv ist.
 
Zurück
Oben