OPNsense Forum

International Forums => German - Deutsch => Topic started by: carepack on May 22, 2020, 01:15:51 pm

Title: HAProxy redirect / rewrite
Post by: carepack on May 22, 2020, 01:15:51 pm
Hallo an alle,
ich hoffe ihr könnt mir helfen. Auch nach stöbern im forum und googlen find ich trotzdem nicht die richtige Lösung.
Es sollte eigentlich ganz einfach sein...
Folgendes will ich erreichen
Aufruf der url webmail.example.de
soll intern durchgereicht werden bzw. geändert werden in
webmail.example.de/roundcube
ich habe es mittels hhtp-redirect und set-path probiert. Im Ergebnis bekomme ich einmal die Mledung im Browser too many redirects, oder aber er versucht die Seite zu laden, präsenitert aber keinen Inhalt - der server nimmt die Anfrage nicht entgegen (No server is available to handle this request.).
Im Hintergrund läuft ein Apache Webserver. Hat jemand eine Idee woran es liegen kann?

Im Voraus vielen Dank!

Title: Re: HAProxy redirect / rewrite
Post by: lewald on May 24, 2020, 04:53:08 pm
Ich habe das bei mir so gelöst.

1. Regel erstellen unter Rules&Check->Rules.

(http://haproxy_rewrite.jpg)

Mit der Option pass....

in der Form reqrep ^([^\ :]*)\ /(.*)     \1\ /da_wil_ich_hin/\2

2. Regel dem Backend zuweisen Virtual Services-> Backend Pools-> Dein Backend für den Service

(http://backend_teil1.jpeg)

(http://backend_teil2.jpeg)

Hoffe das hilft weiter.




Title: Re: HAProxy redirect / rewrite
Post by: carepack on May 25, 2020, 09:53:48 am
Hallo Lewald,
vielen Dank, dass hilft auf jeden Fall. Laut OPNsense / HAProxy Meldung ist reqrep bald deprecated, wie gehst du damit zukünftig um?
Vielen dank schon einmal an der Stelle, das hilft mir sehr.

Interessant. Wen ich wie folg vorgehe
MeinServer: 192..X.X.X.
backend: MeinServer + reqrep rule reqrep ^([^\ :]*)\ /(.*)     \1\ /maia/\2
condition: host matches spam.meinedomain.de
rule: condition + execute use specific backendpool
frontend: add rule


Das klappt für maia mailguard super. für den webmailer roundcube der auf demselben server läuft, allerdings nicht.
MeinServer: Gleicher Server wie oben
backen: neuer pool mit gleichem server + reqrep rule reqrep ^([^\ :]*)\ /(.*)     \1\ /roundcube/\2
condition: host matches webmail.meindomain.de
rule: condition + execute specific backend pool (hier wähle ich den neuen pool mit der reqrep roundcube option.
frontend: add rule

Hier bekomme ich immer die Meldung, dass ich nciht berechtig wäre, auf den Server zuzugreifen.
Interessant ist, wenn ich für diesen Zweck, eine redirect rule erstelle, die matcht, wenn webmail.meinedomain.de eingegeben wird, die url dann dahingehend ändert, webmail.meinedomain,.de/roundcube und ich dann mit einer zweiten regel ein host match auf diese url abfange und dann denn specific backendpool ausführe geht das. Ist allerdings aufwändiger als die von dir genannte lösung und auch nciht so schön.

daher die frage, hat jemend eine idee, warum das vorgehen für maia mailguard funktioniert, aber nicht für roundcube?
Title: Re: HAProxy redirect / rewrite
Post by: JeGr on May 25, 2020, 11:47:17 am
Gibt es einen Grund, warum du das überhaupt direkt im Proxy umschreibst und nicht die Server entsprechend konfigurierst, dass sie entweder bereits auf / reagieren statt auf /roundcube oder den Redirect/Rewrite einfach selbst machen? Warum soll der Proxy das unbedingt umschreiben?

BTW: Es macht IMHO keinen großen Sinn, RFC1918 Adressen "auszublanken". Die sind sowieso privat und nur bei dir gültig, macht also keinen wirklichen Sinn oder "leaked" irgendwelche Infos :)
Title: Re: HAProxy redirect / rewrite
Post by: carepack on May 25, 2020, 11:50:01 am
Ich habe es bereits versucht, ich kenne mich allerdings in apache nicht so gut aus und bin gescheitert. geht das über die httpd.conf und virtual hosts?
Vielleicht kannst du nohc ein wenig erklären, warum das besser ist? Bin bisher so vorgegangen, weil ich auf der opnsense die ganzen zertifikate für die dahinterliegenden webserver verwalte und dachte, dies wäre der richtige weg
Title: Re: HAProxy redirect / rewrite
Post by: JeGr on May 25, 2020, 12:01:42 pm
> und virtual hosts?

Am Einfachsten über den VirtualHost in dem Roundcube konfiguriert ist. Oder wenn es Apache ist, kann man es theoretisch auch in der .htaccess machen, die oft im Roundcube Root liegt. Geht beides. Würde sich mit einfachem Redirect/RedirectMatch machen lassen oder auch als Rewrite/RewriteMatch, wenn das Rewrite Modul eh an ist.

Ich sage nicht per se dass es besser ist, aber es macht die Konfiguration des Proxies auf der Sense (unnötig) komplexer. Im Prinzip willst du an der Stelle ja "nur" die Verbindung absichern und ggf. den Proxy zwischenschalten, damit ein Service ohne HTTPS oder ohne echtes Zert nicht "nackt" im Netz hängt. Aber ansonsten reichen wir einfach alles weiter, wie es ankommt. Wenn wir in den Proxy dann aber noch Rewrites etc. mit reinbauen und ggf. noch den Root ändern, dann kann es sein, dass je nach Anwendung die Applikation damit nicht klar kommt, weil sie unterschiedliche Signale bekommt. Du rufst ggf. dann den Service via domain.tld/ auf, schreibst aber auf domain.tld/roundcube um, der Server kann das aber je nachdem via PHP oder auch über HTTP Server Variablen und Header rausbekommen, dass der Pfad anders aufgerufen wird. Auch bei HTTPS->HTTP verhalten sich da Dienste unterschiedlich. Während es bspw. einem Blog vllt. nichts ausmacht, dreht ein Shop dann durch, weil er suggeriert bekommt, dass er eigentlich mit HTTPS läuft, er aber nur mit HTTP konfiguriert ist und dann sämtliche Links in der Seite auch nur mit http ausliefert und dann jedes Mal die Verbindung umschreibt. Ist also nicht ganz so trivial beantwortbar da immer recht abhängig von der Software. Und daher würde ich den Proxy - nach Möglichkeit - so wenig wie möglich an der eigentlichen Server Arbeit umschreiben lassen, damit die Anwendung das selbst macht und klar weiß "jap, ich bin jetzt im Ordner XY".

Grüße
Title: Re: HAProxy redirect / rewrite
Post by: carepack on May 25, 2020, 12:44:13 pm
Hallo nochmal, dass werde ich mir auf jeden Fall nochmal anschauen.
Vielen, vielen Dank an euch beide! Auch mit den Erklärungen. Vorbildlich und sehr hilfreich.


Gesendet von iPhone mit Tapatalk
Title: Re: HAProxy redirect / rewrite
Post by: JeGr on May 25, 2020, 12:44:59 pm
Wenns klemmt, einfach nochmal melden, Apache2 Konfig ist jetzt kein Drama und Roundcube normalerweise nicht gerade sehr "anspruchsvoll" was die Konfiguration angeht :)
Title: Re: HAProxy redirect / rewrite
Post by: carepack on May 26, 2020, 10:29:27 am
Hallo nochmal,
also ich muss mich doch nochmal an euch wenden. Ich habe nun versucht das ganze über den Apache zu regeln und das setup sieht wie folgt aus
HAProxy:
Server: InterneIP / Port
Backend: Server
Condition: HostMatches webmail.meinedomain.de
Rule: Execute Backend - Server
Frontend: Rule added

Ich habe mir die Roundcube conf des Apache angesehen und original sah sie so aus:
   Alias /roundcube "/usr/local/www/roundcube/"   
   <Directory "/usr/local/www/roundcube">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
   </Directory>

Die habe ich geändert in:
<VirtualHost *:80>
ServerName www.webmail.meinedomain.de
   Alias /roundcube "/usr/local/www/roundcube/"   
   <Directory "/usr/local/www/roundcube">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
   </Directory>
Redirect "webmail.meinedomain.de" "webmail.meinedomain.de/roundcube"
</VirtualHost>

Leider bekomme ich die Meldung: 503 Service Unavailable
No server is available to handle this request.

Irgendwie steh ich total auf dem Schlauch. Vielen Dank wieder mal an Alle....
Title: Re: HAProxy redirect / rewrite
Post by: JeGr on May 26, 2020, 10:46:22 am
Ahoi,

also wenn du einen Virtualhost machst, dann würde ich den etwas anders anpassen. Zudem hast du im VHost nur www.webmail... als Servername definiert, aber nicht webmail.meinedomain.de wie du unten im Redirect schreibst. Das klappt dann nicht, weil der VHost nicht greift.

Du kannst auch den VHost einfach weglassen und wenn sonst nichts auf dem System läuft einfach den Alias anpassen auf "Alias / /usr/local/www/roundcube/" - dann hört der Server einfach direkt auf / statt auf /roundcube.

Ansonsten wenn es ein VHost werden soll, dann würde da der ServerName ohne www rein müssen, der Alias ist dann unnötig und du müsstest lediglich statt dem Redirect den ServerRoot auf /usr/local/www/roundcube setzen müssen. Dann ist unter / gleich Roundcube erreichbar.

Wenn du Roundcube unbedingt unter /roundcube haben möchtest, dann müsste IMHO der Redirect lauten

"RedirectMatch ^/$  http://webmail.meinedomain.de/roundcube"

RedirectMatch ist nicht so "gierig" als Ausdruck und das ^/$ sagt klar, dass NUR der Root Pfad umgeleitet werden soll (^=Anfang des Pfads, $=Pfadende -> somit nur / selektiert). Damit wird dann wirklich nur der Aufruf der Domain an sich auf /roundcube umgeleitet.

Der 503 wird wohl daher kommen, dass der VHost Name nicht stimmt (www.webmail... statt webmail) und er daher auf dem Host jetzt möglicherweise keine sinnvolle Webseite mehr findet.

Grüße
Title: Re: HAProxy redirect / rewrite
Post by: carepack on May 26, 2020, 11:48:45 am
Ich hab auf dem Mailserver mehrere Seiten laufen, jeweils aufrufbar
IP/roundcube
IP/maia

Ich hab jetzt einiges durchprobiert, momentan bekomme ich immer ein 404 url was not found on this server
meinen roundcube.conf unter apache24/Includes
<VirtualHost *:80>
ServerName webmail.meinedomain.de
   Alias / "/usr/local/www/roundcube/"   
   <Directory "/usr/local/www/roundcube">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
   </Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^webmail\.meinedomain\.de$
RewriteRule ^/(.*) https://webmail.meinedomain.de/$1 [R]
</VirtualHost>

oder aber RewriteEngine onmit:
"RedirectMatch ^/$  http://webmail.meinedomain.de/roundcube"

oder:
RewriteRule ^/$ http://subdomain.domain.com/folder/ [R,L]


oder ohne alias:
<VirtualHost *:80>
ServerName mail.meinedomain.de
ServerAlias webmail.meinedomain.de
   <Directory "/usr/local/www/roundcube">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
   </Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^webmail\.meinedomain\.de$
RewriteRule ^/(.*) https://webmail.meinedomain.de/$1 [R]
</VirtualHost>

Es will partout nicht klappen.

Title: Re: HAProxy redirect / rewrite
Post by: carepack on May 26, 2020, 12:08:23 pm
Ich hab auf dem Mailserver mehrere Seiten laufen, jeweils aufrufbar
IP/roundcube
IP/maia

Ich hab jetzt einiges durchprobiert, momentan bekomme ich immer ein 404 url was not found on this server
meinen roundcube.conf unter apache24/Includes
<VirtualHost *:80>
ServerName webmail.meinedomain.de
   Alias / "/usr/local/www/roundcube/"   
   <Directory "/usr/local/www/roundcube">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
   </Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^webmail\.meinedomain\.de$/roundcube/
RewriteRule ^/(.*) https://webmail.meinedomain.de/$1 [R]
</VirtualHost>

oder aber RewriteEngine onmit:
"RedirectMatch ^/$  http://webmail.meinedomain.de/roundcube"

oder:
RewriteRule ^/$ http://subdomain.domain.com/folder/ [R,L]


oder ohne alias:
<VirtualHost *:80>
ServerName mail.meinedomain.de
ServerAlias webmail.meinedomain.de
   <Directory "/usr/local/www/roundcube">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
   </Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^webmail\.meinedomain\.de$
RewriteRule ^/(.*) https://webmail.meinedomain.de/$1 [R]/roundcube/
</VirtualHost>/roundcube/

Es will partout nicht klappen.

Ok, vielen Dank an Alle, manchmal hat man Tomaten auf den Augen. ich hab die Rewrite Regeln in meiner roundcube.conf hinterlegt. Die habe ich jetzt erstaml auf Anfang zurückgestellt und die Rewrite Rules in die .htaccess Datei geschrieben - jetzt klappt es wunderbar.

@JeGr
Ist das "sinnvoll" gelöst oder hast du dazu noch ein paar Gedanken? Warum man wie es anders machen sollte?

Nochmal vielen Dank
Title: Re: HAProxy redirect / rewrite
Post by: JeGr on May 26, 2020, 06:24:40 pm
Wenn das in deiner .htaccess klappt und tut was du willst ist das doch OK :) Gerade bei Weiterleitungen etc. gibt es verschiedene Wege zum Glück. Redirects sind meisten am Einfachsten und brauchen das Rewrite Zusatzmodul nicht. .htaccess geht etwas auf die Performance, aber bei Roundcube und für privat? Geschenkt ;)

Insofern - einfach so dass es ordentlich läuft und fein :)