Routing to other Servers

german

#1

Hi,

i use a Univention Server and some other Services on other Servers, because i migrate the services at the moment to my new Univention server.

At the Moment i have a Redmine Server with Official website “central.mydomain .org/redmine”
My Univention Domain is the same Name and my Server is “central.mydomain .org”

Now i need a Routing to work internal with “central.mydomain.org/redmine” from my Univention Server.

How i can get it?

In German
Hey,

ich suche eine Möglichkeit, über den Univention Server auf andere Server zu leiten.
Aktuell habe ich ein Redmine Service System mit “central.mydomain .org/redmine” laufen, welches von Außen auch prächtig funktioniert.

Innerhalb der Domäne aber, können die PCs die Seite natürlich nicht auflösen, da sie auf dem Univention landen.

Wie kann ich die Seite umleiten, sodass Univention bei /redmine auf den Server leitet?

Best Regards

Alex


#2

Moin,

Sie können versuchen, auf dem Webserver des Univention-Systems einen Reverse Proxy für diese URL einzurichten. Wenn Sie allerdings hier ein und denselben Hostnamen haben, der auf zwei unterschiedliche Systeme (IPs) verweist, so kann es gut sein, dass das in Summe nicht funktionieren wird.

Um den Reverse Proxy einzurichten, müssen Sie zuerst ein paar Module im Apache aktivieren:

a2enmod proxy_http

Anschließend legen Sie eine Konfigurationsdatei an, z.B. /etc/apache2/conf-available/proxy-redmine.conf, und verwenden folgenden Inhalt:

RedirectMatch permanent ^/redmine$ /redmine/
ProxyPass        /redmine/ http://ip.des.redmine.servers/redmine/
ProxyPassReverse /redmine/ http://ip.des.redmine.servers/redmine/

Anschließend die Konfiguration aktivieren (a2enconf proxy-redmine.conf) und den Webserver neu laden lassen (apachectl graceful). Bei Fehlermeldungen entsprechend in /var/log/apache2/error.log nachschauen.

Jetzt zur Frage, warum das potenziell nicht funktionieren könnte. Webserver beliefern ja oft gleichzeitig unterschiedliche Domänen und unterscheiden Anfragen anhand des verwendeten Hostnamens. Wenn jetzt ein und derselbe Servername extern auf z.B. IP 1.2.3.4 auflöst und intern aber auf den UCS-Server unter (fiktiver) IP 9.8.7.6, so kann man auf dem UCS-Server ja nicht sagen ProxyPass /redmine/ http://central.mydomain.org/remine/, weil der UCS-Server central.mydomain.org auf sich selber auflöst, also auf 9.8.7.6, und nicht auf 1.2.3.4. Das Proxying würde somit in eine Endlosschleife laufen.

Wenn man aber das Proxying auf eine URL mit IP-Adresse macht, also wie oben beschrieben und mit unerer Beispieladrese auf http://1.2.3.4/redmine/, so sieht der Redmine-Server eine Anfrage für den Hostnamen 1.2.3.4 und nicht für central.mydomain.org. Je nachdem, wie der Redmine-Server nun konfiguriert ist, kann es gut sein, dass eine Anfrage auf die IP-Adresse dann nicht bei Redmine landen wird.

Generell ist das immer das Problem, wenn man einen Hostnamen intern anders auflöst als extern. Was man daraus lernen sollte: nie Hostnamen wiederverwenden bzw. doppelt verwenden.

Gruß,
mosu


#3

Moin,

vielen Dank schon einmal für die detaillierte Anleitung und Erläuterung.

Hätten Sie denn eine Alternative für mich, wo ich dennoch auf https wechseln kann? Aktuell geht der port 443 für https auf das Univentionportal und die vorhandenen Module dafür (Nextcloud etc).

Redmine läuft auf einen anderen Server und es wäre optimal, wenn ich die Seite auch auf 443 oder https über einen anderen Port bringen kann, ohne dass der externe User beim Browser Meldungen erhält, die die sicherheit etc. anzweifeln.

Aktuell läuft das ganze nur auf Port 80 und dieser ist von der Firewall und dem Router direkt dorthin geroutet.

Gruß

Alex


#4

Mein Punkt war primär, dass Sie auf keinen Fall den gleichen Servernamen für zwei unterschiedliche Server benutzen sollten. Sobald Sie den Redmine-Server anders nennen, z.b. redmine.mydomain.org, verschwinden auch solche Probleme.

Ordentliche SSL-Verschlüsselung ist ein ganz anderes Thema. Da empfehle ich Lektüre, wie z.B. Let’s Encrypt funktioniert.


#5

Hm ok. Dann schaue ich mal, wie ich das optimal lösen kann.

Verschlüsselung von Lets Encrypt verwende ich bereits. Der Redmine Server ist als “Memberserver” bei Univention eingetragen und nutzt auch das Wurzelzertifikat. Daher war eine Umleitung im ersten Gedankengang naheliegend.

Schade, dass Redmine so nicht im AppCenter vorhanden ist. Dann hätte ich diese Problematik oder die Notwendigkeit eines Workarounds gar nicht.

Dennoch vielen Dank für die Zeit und die Hilfe.


#6

Nabend,

ich habe es nun, nach vielen probieren anders gelöst und habe Redmine auf Univention selbst als externe Installation installiert und in die mysql datenbank und Apache eingebunden. Klappt bisher soweit und mit dem /redmine gehts auch.

Hatte es mit einer subdomain versucht. Das hatte aber nur probleme gemacht.