
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-known
Verzeichnis(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-known
Verzeichnis 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-known
in 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
.