Configurer le proxy inverse pour Nextcloud et ONLYOFFICE

Bonjour, Habr!


Je m'engage à tester les éditeurs de documents ONLYOFFICE, ainsi qu'à tester l'intégration des éditeurs dans les services tiers. Nous sommes souvent contactés par des utilisateurs ayant divers problèmes de configuration, dont les solutions sont tout simplement introuvables.


L'une des intégrations les plus populaires est avec le système open source Nextcloud, qui vous permet de créer votre propre stockage cloud. Par exemple, vous avez des documents, des tableaux et des présentations que vous souhaitez partager avec d'autres utilisateurs et un serveur (en option - une voiture dans DigitalOcean). Vous installez Nextcloud là-bas (ou ownCloud, à partir duquel il est en fait bifurqué), connectez les éditeurs de documents et avez la possibilité de travailler ensemble avec ces documents.


La plupart des options d'intégration sont décrites dans notre documentation. Mais des cas d'utilisateurs parfois intéressants apparaissent. Par exemple, ceci: comment configurer un serveur proxy pour Nextcloud et ONLYOFFICE si les trois services sont installés sur des serveurs différents (Nextcloud, éditeurs, proxys). Cela peut se produire s'il existe un système complexe où les éditeurs de documents et un système de gestion des documents font partie d'un système plus vaste avec de nombreux services.


Remarque: Nextcloud et les éditeurs hébergent le même serveur ou sur des serveurs différents. Dans les deux cas, il est nécessaire d'avoir un serveur proxy pour que les éditeurs fonctionnent correctement, ce qui peut être déclenché sur l'un de ces serveurs.


Étant donné:


Trois serveurs: nginx ( http: // nginx ) est installé sur le premier, Nextcloud sur le second ( http: // nextcloud ) et éditeurs de documents sur le troisième ( http: // onlyoffice ). Tout a été installé à l'aide de docker, le port 80 a été utilisé.


Défi:


Configurez nginx de sorte que lors de la demande http: // nginx Nextcloud s'ouvre. Configurez Nextcloud pour qu'il fonctionne avec les éditeurs de documents disponibles sur http: // nginx / editors


Nous déconstruisons le problème et le résolvons selon le plan suivant:


  • Paramètres de proxy pour Nextcloud
  • Configurer les proxys pour les éditeurs de documents afin qu'ils soient disponibles sur http: // nginx / editors
  • Installer un connecteur dans Nextcloud et le configurer
    (Connector est un petit programme qui vous permet de connecter Nextcloud et les éditeurs: ajoute un nouveau menu de paramètres, des boutons pour créer des documents, des tableaux et des présentations, etc.)

Procurations pour Nextcloud


Pour proxy Nextcloud via nginx, vous devez modifier les paramètres nginx et ajouter son adresse aux domaines Nextcloud de confiance.


Les domaines approuvés sont une liste blanche de domaines à partir desquels vous pouvez vous connecter. Si nous essayons d'ouvrir Nextcloud via un proxy sans ajouter son domaine à la liste, nous verrons une erreur.


image


Le domaine à partir duquel l'assistant passe dans Nextcloud y est automatiquement ajouté et le reste doit être enregistré. En savoir plus sur les domaines approuvés dans la documentation .


Les paramètres dont nous avons besoin se trouvent dans le conteneur nginx le long du chemin /etc/nginx/conf.d/default.conf. Nous apportons ce fichier sous la forme suivante:


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

Notez la barre oblique à la fin du chemin proxy_pass.


Mettre à jour les paramètres nginx avec la commande


 service nginx reload 

Vous devez maintenant ajouter le domaine http: // nginx aux domaines de confiance Nextcloud. Pour ce faire, vous devez ouvrir la configuration dans le conteneur Nextcloud, qui se trouve ici /var/www/html/config/config.php. Vous devez y trouver (ou ajouter) la section trusted_domain, y ajouter l'adresse nginx. Après les modifications, cette partie de la configuration ressemblera à ceci:


 'trusted_domain' => (0 => 'nextcloud', 1 => 'nginx') 

Procurations pour les éditeurs de documents


Encore une fois, ouvrez default.conf sur le serveur nginx et ajoutez un autre emplacement:


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

Mais cela ne suffit pas pour que les éditeurs travaillent. Par défaut, l'éditeur de documents génère des liens vers des ressources à l'aide de l'adresse fournie dans la demande. Et puisque l'éditeur ne sait rien du serveur proxy, il générera des liens sans prendre en compte le chemin virtuel (par exemple, http: // nginx / apps / files / ). Ce n'est pas vrai car les fichiers / apps / files / sont sur le serveur http: // onlyoffice / . Pour résoudre ce problème, vous devez spécifier dans l'en-tête de la demande le chemin par rapport auquel les liens doivent être générés. Cela se fait à l'aide de l'en-tête «X-Forwarded-Host».


Ajoutez le code suivant en haut du fichier de configuration:


 proxy_set_header X-Forwarded-Host $http_host/editors; 

Deux autres en-têtes importants sont Upgrade et Connection. Ils vous permettent d'utiliser le protocole websocket pour le travail des éditeurs de documents. Sans eux, les éditeurs fonctionneront également, mais pas aussi efficacement, car xhr sera utilisé à la place de websocket.


Le fichier default.conf résultant ressemblera à ceci:


 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/; } } 

Installer un connecteur dans Nextcloud et le configurer


Le connecteur est situé dans opensource ( github ), et il peut être installé manuellement, mais il est plus facile de le faire via l'App Store Nextcloud. Immédiatement après l'installation, un nouvel élément de menu apparaîtra dans les paramètres, qui est responsable de la configuration du connecteur. Ajoutez-y l'adresse des éditeurs de documents ( http: // nginx / editors / ).


De cette façon, vous pouvez installer ONLYOFFICE et Nextcloud et les configurer.


image


En conclusion


Il s'est avéré quelque chose entre l'article et l'instruction. J'espère que ce sera utile.


J'ai spécifiquement omis certains détails lors de la configuration, car je voulais décrire uniquement les choses nécessaires, afin que ce soit assez simple et clair. Mais si quelque chose semblait déroutant - écrivez dans les commentaires, je vais essayer de l'expliquer. Merci de votre attention.

Source: https://habr.com/ru/post/fr438002/


All Articles