Apache Reverse Proxy-Setup mit einigen Ausnahmen

Apache Reverse Proxy-Setup mit einigen Ausnahmen

Ich möchte Mattermost auf meinem Server installieren und auch die Hosting-Software ISPConfig ausführen. ISPConfig verfügt über einen Mechanismus zum automatischen Abrufen und Installieren von Letsencrypt-Zertifikaten basierend auf dem Hostnamen. Dazu benötigt Letsencrypt Zugriff auf das /.well-knownVerzeichnis(Ich schätze)um nach einer Bestätigungszeichenfolge zu suchen.

Mein Mattermost-System läuft auf Port 8065 und verwendet meine ISPConfig-Hosting-Umgebung, die auf demselben Server läuft, als Reverse Proxy für das SSL-Offloading.

Ich habe die Anweisungen aufhttps://docs.mattermost.com/configure/config-proxy-apache2.htmlwas für unverschlüsselte Verbindungen gut funktioniert.

Sobald ich jedoch versuche, ein SSL-Zertifikat zu erhalten, funktioniert dies nicht mehr. Ich bin mir nicht ganz sicher, was los ist, aber ich vermute, dass der oben erwähnte Code den GESAMTEN Datenverkehr an mein Mattermost-System weiterleitet, obwohl er Anfragen NICHT an das Verzeichnis ./well-known weiterleiten sollte, das für das Letsencrypt-Zeug benötigt wird.

Klingt das sinnvoll? Wenn ja, wie kann ich das ./well-knownVerzeichnis von der Proxy-Funktion ausnehmen?

(Für einen Experten ist das vielleicht ziemlich einfach, aber ich weiß nicht so recht, wo ich anfangen soll – vielleicht, weil ich nicht ganz verstehe, wie dieses Reverse-Proxying funktioniert und was all die Apache-Direktiven genau bedeuten …)

Hier ist ein Ausschnitt meiner aktuellen Änderungen an der Standard-Apache-VHost-Konfiguration:

ServerAdmin [email protected]
ProxyPreserveHost On
RewriteEngine On

RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC]
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]

ProxyPass /.well-known/ !  # <-- I inserted this line, but this does not seem to work...

<Location />
      Require all granted
      ProxyPass http://127.0.0.1:8065/
      ProxyPassReverse http://127.0.0.1:8065/
      ProxyPassReverseCookieDomain 127.0.0.1 mattermost.mydomain.com
</Location>

(Ich habe die obige Modifikation geklaut vonhttps://stackoverflow.com/questions/44651809/no-lets-encrypt-renewal-with-reverse-proxy-in-ispconfig3, aber das scheint nicht zu funktionieren. Vielleicht liegt es an der <Location />Anweisung? Aber wie gebe ich das ganze Verzeichnis an, /ohne es /well-knownin meiner <Location>Anweisung zu verwenden?)

Irgendwelche Ideen, wie ich mein Problem lösen kann?

Antwort1

Vielleicht habe ich zu früh aufgegeben. Ich glaube, ich habe herausgefunden, wie man das Problem löst. Zusätzlich zu <Location>gibt es auch ein <LocationMatch>, das mit regulären Ausdrücken arbeitet. Ich bin kein Experte für reguläre Ausdrücke, aber nach einigem Herumprobieren habe ich festgestellt, dass die folgende Direktive funktioniert:

<LocationMatch "^(?:(?!\/\.well-known).)*$">

Wenn ich das richtig verstehe, trifft dies auf alle Verzeichnisse zu, die nicht mit beginnen /.well-known.

verwandte Informationen