反向代理后Nextcloud Office无法连接CODE:请求地址被拒绝
Collabora Online 反向代理部署后无法与Nextcloud协作问题排查与修复
问题现象
- Nextcloud管理员后台测试
https://code.foo.tld显示服务器可达,但创建/打开文件时弹出错误:Document loading failed - Failed to load Nextcloud Office - please try again later - CODE容器日志输出:
convert-to: Requesting address is denied: z.z.z.z(z.z.z.z为Nextcloud服务器真实IP) - 可正常访问
https://code.foo.tld/hosting/discovery和https://code.foo.tld/hosting/capabilities,但/cool等路径返回空白页
核心原因
Collabora容器的IP白名单未包含Nextcloud服务器的真实IP,导致容器拒绝了来自Nextcloud的协作请求——尽管反向代理后的域名连通性测试通过,但内部IP校验未通过。
修复步骤
1. 修正Docker启动参数
确保启动collabora/code容器时,通过extra_params参数将Nextcloud的真实IP和域名加入白名单:
docker run -t -d -p 127.0.0.1:9980:9980 \ -e "extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:net.proxy_allowlist=z.z.z.z,nextcloud.foo.tld" \ --restart always \ collabora/code:latest
--o:net.proxy_allowlist:多个值用逗号分隔,必须包含Nextcloud的真实IP和域名--o:ssl.termination=true:强制开启,因为SSL由Nginx反向代理处理
2. 调整Nginx反向代理配置
确保Nginx正确传递客户端真实IP给Collabora容器,同时支持WebSocket通信:
server { listen 443 ssl; server_name code.foo.tld; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; location / { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } location ^~ /loleaflet { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } location ^~ /cool { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } }
X-Real-IP和X-Forwarded-For头必须保留,确保Collabora能获取到Nextcloud的真实IP- WebSocket相关配置是文件实时协作的必要条件
3. 确认Nextcloud Office配置
在Nextcloud管理员后台「设置-Office」中:
- 「Collabora Online服务器」填写
https://code.foo.tld - 勾选「使用SSL连接到Collabora Online服务器」(启用HTTPS时)
- 无需填写内部地址,除非有特殊网络架构
验证操作
- 重启Collabora容器:
docker restart <container-id> - 重启Nginx服务:
systemctl restart nginx - 查看CODE容器日志,确认不再出现
Requesting address is denied报错 - 在Nextcloud中创建新文档,验证是否能正常加载
内容的提问来源于stack exchange,提问作者leomeinel
相关产品推荐
相关产品推荐

