Облачное хранилище
Настройка Nextcloud через обратный прокси
конфигурация Nextcloud за обратным прокси

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

Рекомендуемые ссылки