Настройка Обратного Прокси Для Nextcloud И Onlyoffice

Привет, Хабр! Тестирую редакторы документов ONLYOFFICE, а также тестирую интеграцию редакторов со сторонними сервисами.

Пользователи часто обращаются к нам с различными проблемами конфигурации, решения которых просто невозможно найти.

Одна из самых популярных интеграций — с системой Nextcloud с открытым исходным кодом, которая позволяет создать собственное облачное хранилище.

Например, у вас есть документы, таблицы и презентации, которыми вы хотите поделиться с другими пользователями, и сервер (опционально — тачка в DigitalOcean).

Вы устанавливаете туда Nextcloud (или ownCloud, от которого он собственно и форкнулся), подключаете редакторы документов и получаете возможность работать с этими документами вместе.

Большинство вариантов интеграции описаны в нашей документации.

Но иногда всплывают интересные пользовательские кейсы.

Например, такое: как настроить прокси-сервер для Nextcloud и ONLYOFFICE, если все три сервиса установлены на разных серверах (Nextcloud, редакторы, прокси).

Это может произойти, если имеется сложная система, в которой и редакторы документов, и система управления документами являются частью более крупной системы со множеством сервисов.

Примечание.

Nextcloud и редакторы размещаются либо на одном сервере, либо на разных.

В обоих случаях для корректной работы редакции необходимо иметь прокси-сервер, который можно установить на одном из этих серверов.

Данный: Три сервера: на первом установлен nginx( http://nginx ), на втором Nextcloud ( http://nextcloud ), на третьем — редакторы документов ( http://onlyoffice ).

Все устанавливалось через докер, через 80 порт. Задача: Настройте nginx так, чтобы при поступлении запроса http://nginx Следующее облако открылось.

Настройте Nextcloud для работы с редакторами документов, доступными по адресу http://nginx/editors Деконструируем проблему и решаем ее по следующему плану:

  • Настройка прокси для Nextcloud
  • Настройка прокси для редакторов документов, чтобы они были доступны по адресу http://nginx/editors
  • Установка коннектора в Nextcloud и его настройка (Коннектор — небольшая программа, позволяющая подключать Nextcloud и редакторы: добавляет новое меню настроек, кнопки для создания документов, таблиц и презентаций и т. д.)
Прокси для Nextcloud Чтобы проксировать Nextcloud через nginx, вам необходимо изменить настройки nginx и добавить его адрес в доверенные домены Nextcloud. Доверенные домены — это белый список доменов, с которых можно авторизоваться.

Если мы попытаемся открыть Nextcloud через прокси, не добавляя его домен в список, мы увидим ошибку.



Настройка обратного прокси для Nextcloud и ONLYOFFICE

Домен, с которого осуществляется доступ к мастеру, в Nextcloud добавляется туда автоматически, а остальное необходимо прописать.

Подробнее о доверенных доменах можно прочитать в документация .

Нужные нам настройки находятся в контейнере nginx по пути /etc/nginx/conf.d/default.conf. Приводим этот файл к следующему виду:

  
  
  
  
  
   

server { listen 80; location / { proxy_pass_header Server; proxy_pass http://nextcloud/ ; } }

Обратите внимание на косую черту в конце пути proxy_pass. Обновляем настройки nginx командой

service nginx reload

Теперь вам нужно добавить домен http://nginx в доверенные домены Nextcloud. Для этого вам необходимо открыть конфиг в контейнере Nextcloud, который находится здесь /var/www/html/config/config.php. В нем нужно найти (или добавить) раздел доверенный_домен и добавить туда адрес nginx. После изменений эта часть конфига будет выглядеть так:

‘trusted_domain’ => (0 => ‘nextcloud’, 1 => ‘nginx’)

Прокси для редакторов документов Снова откройте default.conf на сервере nginx и добавьте другое местоположение:

location /editors/ { proxy_pass http://onlyoffice/ ; }

Но этого недостаточно для работы редакторов.

По умолчанию редактор документов генерирует ссылки на ресурсы, используя адрес, указанный в запросе.

А поскольку редактор ничего не знает о прокси-сервере, он будет генерировать ссылки без учета виртуального пути (например, http://nginx/apps/files/ ).

Это неверно, поскольку файлы/приложения/файлы/ находятся на сервере.

http://onlyoffice/ .

Чтобы это исправить, нужно в заголовке запроса указать путь, относительно которого должны формироваться ссылки.

Это делается с помощью заголовка «X-Forwarded-Host».

Добавим следующий код в начало файла конфигурации:

proxy_set_header X-Forwarded-Host $http_host/editors;

Еще два важных заголовка — «Обновление» и «Подключение».

Они позволяют использовать протокол websocket для редакторов документов.

Без них редакторы тоже будут работать, но не так эффективно, потому что вместо websocket будет использоваться xhr. Окончательный файл default.conf будет выглядеть так:

proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; proxy_set_header X-Forwarded-Host $http_host/editors; server { listen 80; location / { proxy_pass_header Server; proxy_pass http://nextcloud/ ; } location /editors/ { proxy_pass http://onlyoffice/ ; } }

Установка коннектора в Nextcloud и его настройка Коннектор имеет открытый исходный код ( github ), причем его можно установить вручную, но проще это сделать через Nextcloud App Store. Сразу после установки в настройках появится новый пункт меню, отвечающий за настройку разъема.

Добавьте туда адреса редакторов документов ( http://nginx/editors/ ).

Таким образом вы сможете установить ONLYOFFICE и Nextcloud и настроить их.



Настройка обратного прокси для Nextcloud и ONLYOFFICE

Окончательно Получилось что-то среднее между статьей и инструкцией.

Надеюсь, это будет полезно.

Я сознательно опустил некоторые детали при настройке, так как хотел описать только самое необходимое, чтобы было достаточно просто и понятно.

Но если что-то покажется запутанным, пишите в комментариях, я постараюсь объяснить.

Спасибо за внимание.

Теги: #Nginx #Администрирование сервера #Nextcloud #onlyoffice #proxy #dms

Вместе с данным постом часто просматривают: