关键词:

onlyoffice

nextcloud

Apache 

反向代理

nginx

Error while downloading the document file to be converted

1. 场景:

一台服务器设备安装了很多 docker 服务,包括 nextcloud 和 onlyoffice 和 apache。nextcloud、onlyoffice 服务默认使用 10001 和 10002 端口映射到两个服务的 80 端口。直接访问是通过 80 端口访问的,没有 SSL 加密。

 现在用 apache 监听服务器 IP 的 443 端口,让所有 docker 服务通过 apache 的反向代理进行访问。这样方便我一个证书对所有的服务进行加密。

2. 问题:

问题1:

nextcloud 在配置 onlyoffice 服务器地址的时候,一直报错 “Error while downloading the document file to be converted” ,并且在onlyoffice的后台日志看到报错: 

[2023-07-16T09:35:07.716] [ERROR] nodeJS - error downloadFile:url=http://127.0.0.1:10001/apps/onlyoffice/empty?doc=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY3Rpb24iOiJlbXB0eSJ9.DLpf7UCdEv7YgQUp3bnn5Q4nCQuHbYj2w28RUqA06hk;attempt=3;code:ECONNREFUSED;connect:null;(id=conv_check_698669687_docx)

网上给出的方法是在 onlyoffice 的 config.php 里面加一句 

'allow_local_remote_servers' => true,

但是我实际测试发现还是会有出现问题。后面我解决的方法是在 Apache 的反向代理里面将 127.0.0.1:10001 改成了我服务器的 IP 192.168.5.66:10001 解决了问题。这个问题的原因是 nextcloud 在 18 版本及以后不允许直接通过 localhost 或 127.0.0.1 进行文档访问。

ProxyPass / http://192.168.5.66:10001/

ProxyPassReverse / http://192.168.5.66:10001/

问题2:

onlyoffice 配置了反向代理之后,一直出现我输入地址 https:/onlyoffice地址 访问 onlyoffice ,但是实际会跳转到 http://onlyoffice地址。 导致 onlyoffice 服务无法正常使用。

解决方法:

我是使用 docker 安装的 onlyoffice,这个 docker 镜像里面有一个 nginx 服务对地址进行了 rewrite。将 https 重写成了 http(因为反向代理的目的地址是 http://127.0.0.1:10002)所以我就强制将地址改成了 https ,具体修改如下:

文件:/etc/nginx/includes/http-common.conf

原代码为:

map $http_x_forwarded_proto $the_scheme {

default $http_x_forwarded_proto;

"" $scheme;

}

对 $the_scheme map 修改后的代码:

map $http_x_forwarded_proto $the_scheme {

default https;

"" https;

}

我这样就强制将头改成了 https 。这样做会导致普通的 http 地址访问会被重写成 https。有了具体原因,可以根据实际情况决定是否强制改动,或者加一些逻辑判断语句。我这里因为肯定用 https 地址访问,所以就写死为 https 了。

这两个都解决之后,我所有的问题都解决了。希望我的分享对你有帮助。

补充:正确的解决方法

备注:正确的解决方法不需要改动 nextcloud docker 容器内的任何文件。在 Apache 中配置 X-Forwarded-Proto 为 "https" 。

具体操作为在 Apache 的反向代理配置文档中加入下面这句话:

RequestHeader set X-Forwarded-Proto "https"

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: