You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

反向代理后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时)
  • 无需填写内部地址,除非有特殊网络架构

验证操作

  1. 重启Collabora容器:docker restart <container-id>
  2. 重启Nginx服务:systemctl restart nginx
  3. 查看CODE容器日志,确认不再出现Requesting address is denied报错
  4. 在Nextcloud中创建新文档,验证是否能正常加载

内容的提问来源于stack exchange,提问作者leomeinel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:30:51