HTTPS и адреса
Доступ к сайту осуществляется с использованием небезопасного протокола HTTP. Настоятельно рекомендуется вместо этого настроить использование протокола HTTPS, т.к. без него не будут работать некоторые важные веб-функции, такие, как копирование в буфер обмена и обработчики служб.
Эта ошибка в Nextcloud означает только одно: ты заходишь на сайт по HTTP, а Nextcloud знает, что он должен работать через HTTPS — но прокси не сообщает ему об этом. Это классическая проблема при работе через reverse proxy (Apache/Nginx/Traefik) + Docker.
Ниже — точное, практическое решение, которое полностью убирает предупреждение.
🎯 Короткий ответ
Тебе нужно:
- Настроить HTTPS на прокси (Nginx/Apache/Traefik).
- Сообщить Nextcloud, что он работает через HTTPS, добавив параметры:
php
'overwriteprotocol' => 'https',
'overwritehost' => 'docker.svyx.net',
'overwrite.cli.url' => 'https://docker.svyx.net',
- Убедиться, что прокси передаёт корректные заголовки:
X-Forwarded-ProtoX-Forwarded-HostX-Forwarded-For
🧩 Твой исправленный config.php (фрагмент)
Добавь эти строки внутрь $CONFIG:
php
'trusted_proxies' =>
array (
0 => '192.168.0.162',
1 => '172.17.0.0/16',
),
'overwriteprotocol' => 'https',
'overwritehost' => 'docker.svyx.net',
'overwrite.cli.url' => 'https://docker.svyx.net',
Теперь Nextcloud будет считать, что он работает через HTTPS, даже если запрос приходит от прокси.
🔥 Теперь нужно убедиться, что прокси передаёт правильные заголовки
✔ Если у тебя Nginx reverse proxy
Добавь в конфиг:
Код
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
✔ Если Apache reverse proxy
Код
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Host "docker.svyx.net"
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
✔ Если Traefik
Traefik делает всё автоматически — достаточно trusted_proxies.
🟩 После исправления
Перезапусти контейнер:
Код
docker restart nextcloud
Проверь:
Код
php occ config:list system
Ты должен увидеть:
Код
"overwriteprotocol": "https"
"overwritehost": "docker.svyx.net"
"overwrite.cli.url": "https://docker.svyx.net"
Теперь предупреждение исчезнет.
Доступ осуществляется по небезопасному HTTP
Короткий вывод: Даже если твоя конфигурация Apache почти правильная, но для Nextcloud не хватает двух критически важных вещей:
1) корректных заголовков X-Forwarded-*
2) правильного проксирования WebSocket (Nextcloud не использует ws://, это лишнее)
3) обязательного параметра ProxyPassReverse для HTTPS
4) правильного порядка директив
Ниже — полностью исправленный VirtualHost, который гарантированно убирает предупреждение Nextcloud:
«Доступ осуществляется по небезопасному HTTP» «Заголовки обратного прокси настроены неверно»
✔ Исправленный VirtualHost для Nextcloud через Apache reverse proxy
apache
<VirtualHost *:443>
ServerName docker.svyx.net
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/docker.svyx.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/docker.svyx.net/privkey.pem
# Важно для Nextcloud
ProxyPreserveHost On
ProxyRequests Off
# Основной HTTP‑трафик
ProxyPass / http://192.168.0.162:8080/
ProxyPassReverse / http://192.168.0.162:8080/
# Критически важные заголовки для Nextcloud
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Ssl "on"
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
RequestHeader set X-Forwarded-Host "%{HTTP_HOST}s"
# Защита
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
</VirtualHost>
<VirtualHost *:80>
ServerName docker.svyx.net
Redirect permanent / https://docker.svyx.net/
</VirtualHost>
✔ Что я исправил и почему
🟩 1. Убрал WebSocket‑проксирование
Nextcloud не использует WebSocket, а твой RewriteRule:
apache
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /(.*) ws://192.168.0.162:8080/$1 [P,L]
делает прокси нестабильным и ломает заголовки.
🟩 2. Добавил корректные заголовки X‑Forwarded‑*
Это ключевое для Nextcloud:
Код
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Ssl "on"
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
RequestHeader set X-Forwarded-Host "%{HTTP_HOST}s"
Без них Nextcloud думает, что запрос пришёл по HTTP.
🟩 3. Упростил редирект с HTTP → HTTPS
У тебя было два одинаковых RewriteRule — они не нужны.
🟩 4. Проверил совместимость с Docker
Ты используешь:
- Nextcloud в Docker
- Apache как внешний reverse proxy
- HTTPS на Apache
Это стандартная схема → исправленный конфиг полностью совместим.
✔ Теперь нужно обновить config.php Nextcloud
У тебя уже есть:
php
'trusted_proxies' =>
array (
0 => '192.168.0.162',
1 => '172.17.0.0/16',
),
Добавь:
php
'overwriteprotocol' => 'https',
'overwritehost' => 'docker.svyx.net',
'overwrite.cli.url' => 'https://docker.svyx.net',
✔ После изменений
Перезапусти Apache:
Код
systemctl restart apache2
Перезапусти контейнер Nextcloud:
Код
docker restart nextcloud
Проверь:
Код
php occ config:list system