我们的API文档中描述了将ONLYOFFICE与Nextcloud集成的大多数方法,但是在某些情况下,我们的用户在现实生活中可能会遇到一些棘手的问题。在这篇文章中,我们将向您展示如果所有三个服务器都安装了Nextcloud和ONLYOFFICE的代理服务器。
在我们的例子中,有三台不同的机器,它们具有:
- nginx – http:// nginx,
- Nextcloud – http:// nextcloud,
- ONLYOFFICE编辑器– http:// onlyoffice。
一切都是使用Docker和端口80安装的。
我们要:
- 自定义nginx,以便对http:// nginx的请求将打开Nextcloud,
- 自定义Nextcloud以与http:// nginx / editors /上的文档编辑器一起使用。
让我们按照以下三步计划进行操作。
要通过nginx代理Nextcloud,请更改nginx设置并将其地址添加到Nextcloud可信域列表中。有关受信任域的更多信息,请参见文档。
所需的设置位于nginx容器中的/etc/nginx/conf.d/default.conf
。使这个文件看起来像:
server {
listen 80;
location / {
proxy_pass_header Server;
proxy_pass http://nextcloud/;
}
}
注意prox_pass
路径末尾的斜线。
使用以下命令刷新Nginx设置:
service nginx reload
现在添加http:// nginx域。在的Nextcloud容器中打开配置 /var/www/html/config/config.php
。在trusted_domain
此处找到或添加部分,然后添加nginx地址。所有更改生效后,配置的这一部分将如下所示:
‘trusted_domain’ => (0 => ‘nextcloud’, 1 => ‘nginx’)
default.conf
在Nginx服务器上再次打开并添加一个位置:
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协议有效地运行ONLYOFFICE。
生成的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/;
}
}
使用我们准备好的连接器将ONLYOFFICE和Nextcloud实例彼此链接。该连接器在GitHub上。
安装后,您将在设置菜单中看到一个新选项。在这里,您需要指定ONLYOFFICE编辑器的地址-http:// nginx / editors /。
来源:ONLYOFFICE官方博客,作者: