Публикация NextCloud через Nginx
Публикация NextCloud через Nginx
Эта публикация покажет, как осуществляется публикация NextCloud через Nginx. Для того, чтобы корректно опубликовать NextCloud во внешний мир необходимо скорректировать параметры нескольких смежных систем: Nginx, Apache и непосредственно конфигурационный файл NextCloud.
Для того, чтобы правильно передать через реверс прокси исходный IP-адрес подключения есть ряд настроек, которые необходимо выполнить на всех компонентах публикации – Nginx, Apache и сервере NextCloud.
Настройка публикации на Nginx
Пример публикации на сервере Nginx выглядит следующим образом:
server {
listen 80;
server_name files.itproblog.ru;
return 301 https://files.itproblog.ru$request_uri;
}
server {
listen 443 ssl;
server_name files.itproblog.ru;
client_max_body_size 1G;
ssl_certificate /etc/nginx/ssl/itproblog.ru.crt;
ssl_certificate_key /etc/nginx/ssl/itproblog.ru.key;
location / {
proxy_pass https://files.itproblog.ru;
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-Host $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Deny WebDAV Externally
# location = /remote.php/dav {
# deny all;
# }
}
Корректировка параметров Apache
На сервере Apache для NextCloud необходимо включить модуль:
sudo a2enmod remoteip
sudo systemctl restart apache2
Отредактируем конфигурационный файл модуля remoteip:
sudo nano /etc/apache2/conf-enabled/remoteip.conf
Укажем заголовок, содержащий исходный IP-адрес (X-Forwarded-For) и адрес сервера Nginx (10.10.10.37 в данном случае), который выступает в качестве доверенного прокси:
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 10.10.10.37

Сохраняем внесенные изменения и перезапускаем сервер Apache:
sudo systemctl restart apache2
Корректировка параметров NextCloud
Также необходимо добавить соответствующие параметры в конфигурационный файл config.php:
sudo nano /data/nextcloud/config/config.php
Блок добавляемых параметров:
'trusted_domains' =>
array (
0 => 'files.itproblog.ru',
),
'trusted_proxies' =>
array (
0 => '10.10.10.37',
),
'overwrite.cli.url' => 'https://files.itproblog.ru',
'overwriteprotocol' => 'https',
'forwarded_for_headers' => ['HTTP_X_FORWARDED', 'HTTP_FORWARDED_FOR'],

10.10.10.37 – это адрес сервера nginx.
Сохраняем внесенные изменения и перезапускаем сервер Apache:
sudo systemctl restart apache2
Проверка
После внесения всех необходимых изменений давайте убедимся, что сервер NextCloud правильно идентифицируем IP-адрес внешнего запроса к серверу.
Попробуйте выполнить внешнее обращение к серверу NextCloud, а затем проверьте журнал доступа:
sudo tail /var/log/apache2/files.itproblog.ru.access_lo
31.43.195.167 - - [24/Aug/2023:16:36:55 +0000] "GET /data/.ocdata?t=1692895015421 HTTP/1.0" 404 14337
31.43.195.167 - - [24/Aug/2023:16:36:55 +0000] "PROPFIND /remote.php/dav/ HTTP/1.0" 207 1396
31.43.195.167 - - [24/Aug/2023:16:36:55 +0000] "PROPFIND /remote.php/dav/ HTTP/1.0" 207 1396
31.43.195.167 - - [24/Aug/2023:16:36:55 +0000] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/1.0" 200 1930
31.43.195.167 - - [24/Aug/2023:16:36:55 +0000] "GET /ocs/v2.php/cloud/groups/details HTTP/1.0" 200 1147
31.43.195.167 - - [24/Aug/2023:16:36:55 +0000] "GET /settings/ajax/checksetup HTTP/1.0" 200 2233
10.10.10.44 - - [24/Aug/2023:16:37:13 +0000] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/1.1" 304 1428
31.43.195.167 - - [24/Aug/2023:16:37:25 +0000] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/1.0" 304 992
10.10.10.44 - - [24/Aug/2023:16:37:43 +0000] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/1.1" 304 1428
31.43.195.167 - - [24/Aug/2023:16:37:55 +0000] "GET /ocs/v2.php/apps/notifications/api/v2/notifications HTTP/1.0" 304 992
В случае успешной настройки в запросах, относящихся к внешнему доступу, вы должны увидеть тот внешний IP-адрес, который был использован для получения доступа к сервису.
Публикация NextCloud через Nginx завершена.