Wer kennt sich mit Virtual Hosts im Zusammenspiel mit Reverse Proxys aus?

Liebe Linuxmuster-Freunde,

zunächst mal allen ein entspanntes, gesundes und glückliches neues Jahr 2021!!
Meine Frage:
Auf einem Server bei einem Internethoster laufen unter apache bereits mehrere virtual domains mit diversen Webseiten. Auf ihm soll aber auch RocketChat laufen, das leider definitiv eine (über das übliche letsencrypt-Zertifikat abgesicherte) ssl-Verbindung möchte. Soweit ich erkennen kann, muss das Ganze auch über Port 443 laufen - der ist aber ja für die Virtual Hosts „belegt“. (Irgendwie spielt hier auch noch Port 3000 zusätzlich rein, aber das ist nicht mein Problem).
Kann ich denn nun ZUSÄTZLICH einen weiteren virtuellen Host („chat.unsergymnasium.de“…) mit der reverse-Proxy-Einrichtung verkoppeln, sodass diese Domain dann auf den rocketchat-Port gemappt wird ?
Denn: Die empfohlen reverse-proxy-Einrichtung mit nginx wird wohl nicht laufen, da er nicht parallel zum apache an Port 443 „schnuppern“ darf, oder ?
Oder soll ich das alles in einen Docker-Container einsperren, sodass der RockeChat quasi auf einem „eigenen Server“ läuft ?

Danke für jede Hilfe
Christoph Gü

Hallo Christoph,

Failed :smiley:
Ich wünsche dich (dir ? ich verwechsle immer … ) auch ein frohes neues.

Ich kenne RocketChat nicht, aber wenn es möglich ist, den auf einen anderen Port laufen zu lassen, sagen wir mal 8000, dann ist es relativ einfach ein Proxy mit Nginx + Let’s encrypt Zert zu konfigurieren. Das mache ich für meine Python Applications.

Z.B. :

server {
    listen               80;
    listen                   [::]:80;
    server_name          www.MYDOMAIN.COM;
    return 301 https://$server_name$request_uri;
}
 
server {
    listen [::]:443 ssl http2;
    listen 443 ssl http2;

    access_log /var/log/nginx/MYDOMAIN-access.log;
    error_log /var/log/nginx/MYDOMAIN-error.log warn;

    ssl_certificate /etc/letsencrypt/live/MYDOMAIN.COM/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/MYDOMAIN.COM/privkey.pem;
 
    server_name www.MYDOMAIN.COM;
 
    root /var/www/MYAPP;

    location / {
	proxy_pass http://localhost:8000;
	proxy_set_header Host $http_host;
	proxy_redirect off;
	proxy_set_header X-Forwarded-For $remote_addr;
	proxy_set_header X-Forwarded-Proto $scheme;
	client_max_body_size 20m;
    }
}

Hoffe es hilft.

Gruß

Arnaud

Danke, Arnaud,

das schau ich mir mal genauer an!

L.G.
Christoph

Am besten und einfachsten geht es m.E. mit den verschiedenen Diensten auf verschiedenen Ports. Als RocketChat z.B. auf 4000. Für mein nginx nutze ich ausschließlich reverse Proxies, das ist dann für jeden neuen Dienst eine neue kleine Datei in den sites-available mit Link in die enabled. Sieht dann immer gleich aus:

upstream dienst {
        server localhost:4000;
}
server {                       
        server_name dienst.domain.de;
        keepalive_timeout 5;
                            
        access_log /var/log/dienst.access.log;                
        error_log /var/log/dienst.error.log info;             
                                                              
        location ~ /\.  { return 404; }                       
        location / {                                          
                try_files $uri @dienst;                       
        }                                                     
                                                              
        location @dienst {                                    
                include proxy_params;                         
                proxy_pass http://dienst;                     
        }
}

anschließend lasse ich certbot drüberschauen und die Zertifikate werden automatisch ergänzt.
Das wars dann auch schon und funktioniert prima.

Hallo, vielen Dank -

ich bin gerade mal wieder auf sechs anderen Baustellen unterwegs, werde es aber hier schreiben, wenn cih erfolgreich war !

L.G.

Christoph