Configurar proxy inverso para Nextcloud y ONLYOFFICE

Hola Habr!


Me comprometo a probar los editores de documentos de ONLYOFFICE, así como a probar la integración de editores en servicios de terceros. A menudo nos contactan usuarios con diversos problemas de configuración, cuyas soluciones simplemente no se pueden encontrar.


Una de las integraciones más populares es con el sistema de código abierto Nextcloud, que le permite crear su propio almacenamiento en la nube. Por ejemplo, tiene documentos, tablas y presentaciones que desea compartir con otros usuarios y un servidor (como opción, un automóvil en DigitalOcean). Instala Nextcloud allí (o ownCloud, desde el cual, de hecho, se bifurca), conecta editores de documentos y tiene la oportunidad de trabajar juntos con estos documentos.


La mayoría de las opciones de integración se describen en nuestra documentación. Pero a veces aparecen casos de usuarios interesantes. Por ejemplo, esto: cómo configurar un servidor proxy para Nextcloud y ONLYOFFICE si los tres servicios están instalados en servidores diferentes (Nextcloud, editores, proxies). Esto puede suceder si hay un sistema complejo en el que tanto los editores de documentos como el sistema de gestión de documentos forman parte de un sistema más grande con muchos servicios.


Nota: Nextcloud y los editores alojan el mismo servidor o en diferentes. En ambos casos, es necesario tener un servidor proxy para que los editores funcionen correctamente, lo que se puede generar en uno de estos servidores.


Dado:


Tres servidores: nginx ( http: // nginx ) está instalado en el primero, Nextcloud en el segundo ( http: // nextcloud ) y editores de documentos en el tercero ( http: // onlyoffice ). Todo se instaló con Docker, se utilizó el puerto 80.


Desafío:


Configure nginx para que cuando solicite http: // nginx se abra Nextcloud. Configure Nextcloud para trabajar con editores de documentos disponibles en http: // nginx / editors


Deconstruimos el problema y lo resolvemos de acuerdo con el siguiente plan:


  • Configuración de proxy para Nextcloud
  • Configure proxies para editores de documentos para que estén disponibles en http: // nginx / editors
  • Instalar un conector en Nextcloud y configurarlo
    (Connector es un pequeño programa que le permite conectar Nextcloud y editores: agrega un nuevo menú de configuración, botones para crear documentos, tablas y presentaciones, etc.)

Proxies para Nextcloud


Para proxy Nextcloud a través de nginx, debe cambiar la configuración de nginx y agregar su dirección a los dominios de confianza de Nextcloud.


Los dominios de confianza son una lista blanca de dominios desde los que puede iniciar sesión. Si intentamos abrir Nextcloud a través de un proxy sin agregar su dominio a la lista, veremos un error.


imagen


El dominio desde el que pasa el asistente en Nextcloud se agrega automáticamente allí, y el resto debe estar registrado. Lea más sobre dominios de confianza en la documentación .


La configuración que necesitamos está en el contenedor nginx a lo largo de la ruta /etc/nginx/conf.d/default.conf. Traemos este archivo al siguiente formulario:


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

Tenga en cuenta la barra diagonal al final de la ruta proxy_pass.


Actualice la configuración de nginx con el comando


 service nginx reload 

Ahora debe agregar el dominio http: // nginx a los dominios de confianza de Nextcloud. Para hacer esto, debe abrir la configuración en el contenedor Nextcloud, que se encuentra aquí /var/www/html/config/config.php. En él, debe encontrar (o agregar) la sección Trusted_domain, agregue la dirección nginx allí. Después de los cambios, esta parte de la configuración se verá así:


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

Proxies para editores de documentos


Nuevamente, abra default.conf en el servidor nginx y agregue otra ubicación:


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

Pero esto no es suficiente para que los editores trabajen. Por defecto, el editor de documentos genera enlaces a recursos utilizando la dirección que viene en la solicitud. Y dado que el editor no sabe nada sobre el servidor proxy, generará enlaces sin tener en cuenta la ruta virtual (por ejemplo, http: // nginx / apps / files / ). Esto no es cierto porque los archivos / aplicaciones / archivos / están en el servidor http: // onlyoffice / . Para solucionar esto, debe especificar en el encabezado de la solicitud la ruta relativa a los enlaces que se deben generar. Esto se hace usando el encabezado "X-Fordered-Host".


Agregue el siguiente código al principio del archivo de configuración:


 proxy_set_header X-Forwarded-Host $http_host/editors; 

Otros dos encabezados importantes son Actualización y Conexión. Le permiten utilizar el protocolo websocket para el trabajo de los editores de documentos. Sin ellos, los editores también funcionarán, pero no de manera tan eficiente, porque se usará xhr en lugar de websocket.


El archivo default.conf resultante se verá así:


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

Instalar un conector en Nextcloud y configurarlo


El conector se encuentra en código abierto ( github ) y se puede instalar manualmente, pero es más fácil hacerlo a través de la tienda de aplicaciones Nextcloud. Inmediatamente después de la instalación, aparecerá un nuevo elemento de menú en la configuración, que es responsable de la configuración del conector. Agregue la dirección de los editores de documentos allí ( http: // nginx / editors / ).


De esta forma, puede instalar ONLYOFFICE y Nextcloud y configurarlos.


imagen


En conclusión


Resultó algo entre el artículo y las instrucciones. Espero que te sea útil.


Omití específicamente algunos detalles al configurar, porque quería describir solo las cosas necesarias, para que fuera bastante simple y claro. Pero si algo parecía confuso, escriba en los comentarios, intentaré explicarlo. Gracias por su atencion

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


All Articles