Nextcloud/Reverse proxy: Unterschied zwischen den Versionen
Zeile 125: | Zeile 125: | ||
==== Links ==== | ==== Links ==== | ||
===== Weblinks ===== | ===== Weblinks ===== | ||
# https://docs.nextcloud.com/server/29/admin_manual/configuration_server/reverse_proxy_configuration.html | |||
[[Kategorie:Nextcloud/Konfiguration]] | [[Kategorie:Nextcloud/Konfiguration]] | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 21. Juni 2024, 09:35 Uhr
Nextcloud/Reverse proxy - Kurzbeschreibung
Beschreibung[Bearbeiten | Quelltext bearbeiten]
Nextcloud kann über einen Reverse Proxy betrieben werden, der statische Assets wie Bilder, CSS- oder JS-Dateien zwischenspeichern, die Last der HTTPS-Verarbeitung auf einen anderen Server verlagern oder einen Lastausgleich zwischen mehreren Servern herstellen kann.
Definition vertrauenswürdiger Proxies[Bearbeiten | Quelltext bearbeiten]
Aus Sicherheitsgründen müssen Sie explizit die Proxy-Server definieren, denen Nextcloud vertrauen soll.
- Verbindungen von vertrauenswürdigen Proxys werden speziell behandelt, um die echten Client-Informationen für die Zugriffskontrolle und Protokollierung zu erhalten.
- Die Parameter werden in
config/config.php
konfiguriert
Legen Sie den Parameter trusted_proxies
als ein Array von fest:
- IPv4-Adressen
- IPv4-Bereiche in CIDR-Notation
- IPv6-Adressen
- IPv6-Bereiche in CIDR-Notation
um die Server festzulegen, denen Nextcloud als Proxyserver vertrauen soll.
- Dieser Parameter bietet Schutz gegen Client-Spoofing, und Sie sollten diese Server wie Ihren Nextcloud-Server absichern.
Ein Reverse-Proxy kann HTTP-Header mit der ursprünglichen Client-IP-Adresse definieren, und Nextcloud kann diese Header verwenden, um diese IP-Adresse abzurufen.
- Nextcloud verwendet standardmäßig den De-facto-Standard-Header "X-Forwarded-For", der jedoch mit dem Parameter forwarded_for_headers konfiguriert werden kann.
- Dieser Parameter ist ein Array von PHP-Lookup-Strings, zum Beispiel wird 'X-Forwarded-For' zu 'HTTP_X_FORWARDED_FOR'.
- Wenn dieser Parameter falsch gesetzt ist, kann es vorkommen, dass Clients ihre IP-Adresse als für Nextcloud sichtbar fälschen, selbst wenn sie durch den vertrauenswürdigen Proxy gehen! Der richtige Wert für diesen Parameter hängt von Ihrer Proxy-Software ab.
Überschreiben Sieparameters[Bearbeiten | Quelltext bearbeiten]
Die automatische Erkennung von Hostname, Protokoll oder Webroot von Nextcloud kann in bestimmten Reverse-Proxy-Situationen fehlschlagen.
- Mit dieser Konfiguration kann die automatische Erkennung manuell überschrieben werden.
- Wenn Nextcloud den Hostnamen, das Protokoll oder die Webroot nicht automatisch erkennt, können Sie die Überschreibungsparameter in der
config/config.php
verwenden.
overwritehost
legt den Hostnamen des Proxys fest.- Sie können auch einen Port angeben.
overwriteprotocol
legt das Protokoll des Proxys fest.- Sie können zwischen den beiden Optionen http und https wählen.
overwritewebroot
setzt den absoluten Webpfad des Proxys auf den Nextcloud-Ordner.overwritecondaddr
überschreibt die Werte in Abhängigkeit von der Remote-Adresse.- Der Wert muss ein regulärer Ausdruck für die IP-Adressen des Proxys sein.
- Dies ist nützlich, wenn Sie einen Reverse-SSL-Proxy nur für den https-Zugang verwenden und die automatische Erkennung für den http-Zugang nutzen möchten.
overwrite.cli.url
die Basis-URL für alle URLs, die innerhalb von Nextcloud mit Hilfe von Kommandozeilen-Tools erzeugt werden.- Der hier eingestellte Wert wird zum Beispiel vom Benachrichtigungsbereich verwendet.
Lassen Sie den Wert leer oder lassen Sie den Parameter weg, um die automatische Erkennung beizubehalten.
DienstDiscovery[Bearbeiten | Quelltext bearbeiten]
Die Weiterleitungen für CalDAV oder CardDAV funktionieren nicht, wenn Nextcloud hinter einem Reverse-Proxy läuft.
- Die empfohlene Lösung ist, dass Ihr Reverse-Proxy die Umleitungen vornimmt.
Apache2[Bearbeiten | Quelltext bearbeiten]
RewriteEngine On RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L] RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav/ [R=301,L]
Traefik1[Bearbeiten | Quelltext bearbeiten]
Docker-Labels verwenden:
traefik.frontend.redirect.permanent: 'true' traefik.frontend.redirect.regex: 'https://(.*)/.well-known/(?:card|cal)dav' traefik.frontend.redirect.replacement: 'https://$$1/remote.php/dav'
Verwendung von traefik.toml:
[frontends.frontend1.redirect] regex = "https://(.*)/.well-known/(?:card|cal)dav" replacement = "https://$1/remote.php/dav permanent = true
Danke an @pauvos und @mrtumnus für die Traefik-Beispiele.
Traefik2[Bearbeiten | Quelltext bearbeiten]
Docker-Labels verwenden:
traefik.http.routers.nextcloud.middlewares: 'nextcloud_redirectregex' traefik.http.middlewares.nextcloud_redirectregex.redirectregex.permanent: true traefik.http.middlewares.nextcloud_redirectregex.redirectregex.regex: 'https://(.*)/.well-known/(?:card|cal)dav' traefik.http.middlewares.nextcloud_redirectregex.redirectregex.replacement: 'https://$${1}/remote.php/dav'
Verwendung einer TOML-Datei:
[http.middlewares] [http.middlewares.nextcloud-redirectregex.redirectRegex] permanent = true regex = "https://(.*)/.well-known/(?:card|cal)dav" replacement = "https://${1}/remote.php/dav"
HAProxy[Bearbeiten | Quelltext bearbeiten]
acl url_discovery path /.well-known/caldav /.well-known/carddav http-request redirect location /remote.php/dav/ code 301 if url_discovery
NGINX[Bearbeiten | Quelltext bearbeiten]
location /.well-known/carddav { return 301scheme://$host/remote.php/dav; } location /.well-known/caldav { return 301scheme://$host/remote.php/dav; }
oder
rewrite ^/\.well-known/carddav https://$server_name/remote.php/dav/ redirect; rewrite ^/\.well-known/caldav https://$server_name/remote.php/dav/ redirect;
Caddy[Bearbeiten | Quelltext bearbeiten]
subdomain.example.com { redir /.well-known/carddav /remote.php/dav/ 301 redir /.well-known/caldav /remote.php/dav/ 301 reverse_proxy {$NEXTCLOUD_HOST:localhost} }
Beispiel[Bearbeiten | Quelltext bearbeiten]
Mehrere Domains reverse SSLproxy[Bearbeiten | Quelltext bearbeiten]
Wenn Sie auf Ihre Nextcloud-Installation http://domain.tld/nextcloudüber einen Multiple-Domains-Reverse-SSL-Proxyhttps://ssl-proxy.tld/domain.tld/nextcloud mit der IP-Adresse 10.0.0.1zugreifen möchten, können Sie die folgenden Parameter in der config/config.php
einstellen.
<?php CONFIG = array ( 'trusted_proxies' => ['10.0.0.1'], 'overwritehost' => 'ssl-proxy.tld', 'overwriteprotocol' => 'https', 'overwritewebroot' => '/domain.tld/nextcloud', 'overwritecondaddr' => '^10\.0\.0\.1$', 'overwrite.cli.url' => 'https://domain.tld/, );
- Hinweis
- Wenn Sie den SSL-Proxy während der Installation verwenden möchten, müssen Sie die
config/config.php
erstellen, andernfalls müssen Sie das bestehende$CONFIG-Array erweitern.