Zwei Services daheim über Port 443 parallel verfügbar machen?

looperna

Cadet 4th Year
Registriert
Mai 2022
Beiträge
109
Hi,

ich habe in einer VM eine Nextcloud und in der anderen nun einen Matrix Server. Der Matrix Server braucht den Port 443 auch zwingend. Aber der wird ja schon von der Nextcloud genutzt. Ich kann diese Umsetzung also vergessen, korrekt?

Denn mit nginx kann ich mit "stream" ja nicht nach Hostname filtern. Denn dann hätte ich alles für Port 443 an die Matrix VM geleitet wo ein ngninx Server ist und den Traffic der für die Nextcloud gedacht ist mit stream auf die andere VM streamt. Und der Rest bleibt auf der Matrix VM und kann dort verarbeitet werden.

Und ich muss ja stream nutzen (und nicht proxy pass), weil sonst die TLS Verschlüsselung unterbrochen wird und das ja dann auch ziemlich schlecht ist. Richtig?

Danke euch...
 
Die Lösung nennt sich reverse Proxy. Dafür geht Nginx oder haproxy. Du braucht allerdings eine Domain.

Damit hast du, je nach support der Applikationen 2 möglichkeiten:
app1.example.com / app2.example.com geht immer
example.com/app1 + example.com/app2 geht nur, wenn die Applikationen das unterstützen.

EDIT: Proxy_pass ist nur insofern "kritisch", dass du auf deinem Server die Daten siehst.
Dadurch, dass du sowieso den Matrix Client laufen hast, ist eh egal ob es vorher durch nginx oder später durch matrix entschlüsselt wird.
 
  • Gefällt mir
Reaktionen: conf_t, GTrash81, DEADBEEF und eine weitere Person
Zeroflow schrieb:
Proxy_pass ist nur insofern "kritisch", dass du auf deinem Server die Daten siehst.
Ok. Ich bin an dem "stream" Feature gescheitert. Aber dann werde ich es mit proxy_pass versuchen. Ich dachte halt, dass der Besucher der Nextcloud dann irgendwelche Nachteile hat, wenn ich die Verschlüsselung aufbreche.

00Julius schrieb:
Ok. Aber dann muss ich ja immer https://meine.cloud.de:12345 nutzen, oder? Das ist dann nicht gut für mich und die Leute die die Cloud besuchen. Und bei Matrix muss ich wohl 443 zwingend nutzen, da die Federation sonst nicht gehen würde. Zumindest habe ich das jetzt so verstanden
 
looperna schrieb:
Ok. Ich bin an dem "stream" Feature gescheitert. Aber dann werde ich es mit proxy_pass versuchen. Ich dachte halt, dass der Besucher der Nextcloud dann irgendwelche Nachteile hat, wenn ich die Verschlüsselung aufbreche.
Du brichst nichts auf. Der SNI ist nicht verschlüsselt.
 
  • Gefällt mir
Reaktionen: looperna
looperna schrieb:
Ok. Aber dann muss ich ja immer https://meine.cloud.de:12345 nutzen, oder? Das ist dann nicht gut für mich und die Leute die die Cloud besuchen.
Na ja, "einen Tod werdet ihr sterben müssen".
Entweder es geht gar nicht oder man gewöhnt sich daran die Nextcloud über einen andern Port aufzurufen.
Den neuen Favoriten legt man ja nur 1x an.
Geteilte Links sind ja sowieso nur Zeichenketten, die auf die richtige Datei verweisen.
Es muss dann nur der neue Port noch freigegeben werden.
 
looperna schrieb:
Und ich muss ja stream nutzen (und nicht proxy pass), weil sonst die TLS Verschlüsselung unterbrochen wird und das ja dann auch ziemlich schlecht ist. Richtig?
Naja, kommt drauf an ob du dem Proxy Server vertraust, den du aufgesetzt hast...

00Julius schrieb:
Entweder es geht gar nicht oder man gewöhnt sich daran die Nextcloud über einen andern Port aufzurufen.
Oder halt reverse Proxy?...

00Julius schrieb:
Den neuen Favoriten legt man ja nur 1x an.
Unterstützen alle Varianten der Nextcloud App angepasste Ports?
 
Nun nutze ich proxy_pass und bekomme beim Aufruf meiner Cloud den Fehler "ERR_TOO_MANY_REDIRECTS". Habe an der Nextcloud natürlich erstmal nichts verändert und einfach nur die nginx Config erstellt. Auf dem Server 192.168.1.52 läuft Nextcloud. Jetzt habe ich noch zusätzlich der Nextcloud config.php folgendes hinzugefügt:

Code:
'trusted_domains' =>

  array (

    0 => '192.168.1.52',

    1 => 'cloud.domain.com',

    2 => '192.168.1.184',

   ...

  ),


'trusted_proxies' => ['192.168.1.184'],  // IP des Reverse Proxys (Nginx)

'overwritehost' => 'cloud.domain.com',

'overwriteprotocol' => 'https',

Also es ist offensichtlich ein TLS Problem. Aber ich kann die Logik gerade nicht ganz nachvollziehen.


NGINX Config:

Code:
server {
    listen 80;
    server_name cloud.domain.com;

    location / {
        proxy_pass http://192.168.1.52;
        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;
    }
}

server {
    listen 443 ssl;
    server_name cloud.domain.com;

    ssl_certificate /etc/letsencrypt/live/cloud.domain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/cloud.domain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    location / {
        proxy_pass http://192.168.1.52;
        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;
    }
}
 
Fehler gefunden:

Ich hatte bei "proxy_pass" http statt https verwendet. Und da ich "overwriteprotocol" bei der Nextcloud auf https hatte ging das irgendwie nicht. Vielleicht kann mir jemand erklären wieso? Denn ich habe zwar nun die Lösung, aber ich kann es mir noch nicht ganz erklären.

Also ich rufe meine URL mit https auf, lande dann bei nginx. Nginx leitet mich dann via http ohne TLS and meine Nextcloud VM weiter. Und diese setzt das Protokoll dann auf https. Wo ist also das Problem? Wenn ich im Browser meine Webseite mit http aufrufe, dann werde ich auch automatisch ohne Probleme auf https weitergeleitet, da dies entweder beim Webserver so konfiguriert ist oder weil der Browser dies tut. Aber es funktioniert immer ohne Probleme.
 
Zurück
Oben