为Nextcloud和ONLYOFFICE配置反向代理

哈Ha!


我从事测试ONLYOFFICE文档编辑器,以及测试编辑器在第三方服务中的集成。 用户经常与我们联系,遇到各种配置问题,根本找不到他们的解决方案。


最受欢迎的集成之一是与开源Nextcloud系统的集成,该系统允许您创建自己的云存储。 例如,您具有要与其他用户共享的文档,表格和演示文稿,以及一台服务器(作为选择-DigitalOcean中的汽车)。 您在此处安装Nextcloud(或实际上是从其分支的ownCloud),连接文档编辑器,并有机会一起处理这些文档。


我们的文档中介绍了大多数集成选项。 但是有时会弹出一些有趣的用例。 例如,这是:如果所有三个服务都安装在不同的服务器(Nextcloud,编辑器,代理)上,则如何为Nextcloud和ONLYOFFICE配置代理服务器。 如果存在一个复杂的系统,其中文档编辑器和文档管理系统都是具有许多服务的较大系统的一部分,则可能会发生这种情况。


注意:Nextcloud和编辑器托管同一服务器或不同服务器。 在这两种情况下,都需要有一个代理服务器以使编辑器正常工作,可以在其中一台服务器上引发该代理服务器。


鉴于:


三个服务器:第一个安装了nginx( http:// nginx ),第二个安装了Nextcloud( http:// nextcloud ),第三个安装了文档编辑器( http:// onlyoffice )。 一切都是使用docker安装的,使用了端口80。


挑战:


配置nginx,以便在请求http时// // nginx Nextcloud打开。 将Nextcloud设置为可与位于http:// nginx / editors的文档编辑器一起使用


我们对问题进行解构并根据以下计划解决:


  • Nextcloud的代理设置
  • 将文档编辑器的代理配置为可在http:// nginx / editors上获得
  • 在Nextcloud中安装连接器并对其进行配置
    (Connector是一个小程序,可让您连接Nextcloud和编辑器:添加了新的设置菜单,用于创建文档,表格和演示文稿的按钮等。)

Nextcloud的代理


要通过nginx代理Nextcloud,您需要更改nginx设置并将其地址添加到受信任的Nextcloud域。


受信任的域是您可以登录的域的白名单。 如果我们尝试通过代理打开Nextcloud而不将其域添加到列表中,则会看到错误。


图片


向导在Nextcloud中通过的域将自动添加到该域中,其余域必须注册。 在文档中阅读有关受信任域的更多信息。


我们需要的设置位于路径/etc/nginx/conf.d/default.conf中的nginx容器中。 我们将此文件转换为以下格式:


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。 在其中,您需要找到(或添加)trusted_domain部分,并在其中添加Nginx地址。 更改后,配置的这一部分将如下所示:


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

文件编辑器的代理


再次,在Nginx服务器上打开default.conf并添加另一个位置:


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

但这还不足以使编辑人员可以工作。 默认情况下,文档编辑器使用请求中附带的地址生成到资源的链接。 而且由于编辑器对代理服务器一无所知,因此它将在不考虑虚拟路径的情况下生成链接(例如, http:// nginx / apps / files / )。 这是不正确的,因为文件/ apps / files /位于服务器http:// onlyoffice /上 。 要解决此问题,您需要在请求标头中指定相对应生成链接的路径。 这是使用“ X-Forwarded-Host”标头完成的。


将以下代码添加到配置文件的顶部:


 proxy_set_header X-Forwarded-Host $http_host/editors; 

另外两个重要的标头是“升级”和“连接”。 它们允许您将websocket协议用于文档编辑器的工作。 没有它们,编辑器也可以工作,但效率却不高,因为将使用xhr代替websocket。


生成的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并对其进行配置。


图片


总结


原来在文章和说明之间有一些东西。 我希望它会有用。


我在设置时特别省略了一些细节,因为我只想描述必要的内容,因此非常简单明了。 但是,如果有些事情令人困惑,请在评论中写点,我会尽力解释。 谢谢您的关注。

Source: https://habr.com/ru/post/zh-CN438002/


All Articles