Nextcloud можно безопасно запускать за обратным прокси. Это позволяет кэшировать статические ресурсы (изображения, CSS, JS), разгружать сервер HTTPS или балансировать нагрузку между несколькими серверами.
Определение доверенных прокси
Для безопасности важно явно указать, какие прокси-серверы Nextcloud будет считать доверенными. Соединения от этих прокси будут корректно обрабатываться для получения реальных данных о клиенте — для контроля доступа и логирования.
'trusted_proxies' => [ '192.168.1.1', // отдельный IP '192.168.0.0/24', // диапазон IPv4 '2001:db8::1', // IPv6 '2001:db8::/32' // диапазон IPv6 ], 'forwarded_for_headers' => ['HTTP_X_FORWARDED_FOR'],
⚠️ Неправильная настройка может позволить клиентам подменять свой IP адрес.
Перезапись параметров
В некоторых случаях автоматическое определение хоста, протокола или веб-корня может не работать. Можно вручную задать:
'overwritehost' => 'example.com', 'overwriteprotocol' => 'https', 'overwritewebroot' => '/nextcloud', 'overwritecondaddr' => '^192\.168\.1\.\d+$', 'overwrite.cli.url' => 'https://example.com/nextcloud',
Оставьте пустым или пропустите параметр, если хотите использовать автоматическое определение.
Service Discovery для CalDAV и CardDAV
Если Nextcloud работает за обратным прокси, редиректы для CalDAV/CardDAV могут не работать. Рекомендуется настроить редиректы на прокси-сервере.
Apache2
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]
NGINX
location /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } location ^~ /.well-known { return 301 $scheme://$host/index.php$uri; }
При использовании NGINX Proxy Manager добавьте proxy_hide_header Upgrade;
в “Advanced Settings”, иначе мобильные устройства могут получать ошибку “Connection Closed”.
Traefik, HAProxy и Caddy
Traefik: настройка через Docker labels или TOML файл для редиректа.
- "traefik.http.routers.nextcloud.middlewares=nextcloud_redirectregex@docker" - "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"
HAProxy: редирект через ACL.
[http.middlewares] [http.middlewares.nextcloud-redirectregex.redirectRegex] permanent = true regex = "https://(.*)/.well-known/(?:card|cal)dav" replacement = "https://${1}/remote.php/dav"
Caddy: простые редиректы на /.well-known/carddav
и /.well-known/caldav
.
acl url_discovery path /.well-known/caldav /.well-known/carddav http-request redirect location /remote.php/dav/ code 301 if url_discovery