Nextcloud 集成 onlyoffice 配置 apache 反向 SSL 反向代理填坑

关键词:

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"

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值