5.0 KiB
5.0 KiB
Collabora IP链路部署与排障
本次目标
将文档预览/编辑链路统一收口到 http://172.16.0.59:5173,避免 nas.7bm.co 与内网 IP 混用导致:
- Collabora iframe 打不开
chrome-error://chromewebdata/refused to connect/拒绝连接- WOPI 已经 200,但浏览器侧仍然失败
最终生效配置
1. 前端环境变量
文件:legal-platform-frontend/.env
关键项:
API_BACKEND_TARGET=http://172.16.0.59:8096
APP_URL=http://172.16.0.59:5173
DOCUMENT_URL=http://172.16.0.59:8096/docauditai/
COLLABORA_URL=http://172.16.0.59:5173
说明:
APP_URL决定 WOPI 回调地址WOPISrcCOLLABORA_URL决定 iframe 中加载的cool.html- 如果这里仍然写域名,最终会重新生成域名链路
2. nginx 代理
文件:deploy/collabora-proxy/conf.d/collabora.conf
必须代理这些路径:
/wopi//browser//cool//coolws//hosting//loleaflet//
关键点:
- Collabora 相关
Host/X-Forwarded-Host统一写成172.16.0.59:5173 proxy_redirect统一改写到http://172.16.0.59:5173//coolws/不能漏,否则 websocket 子通道会 404
3. Collabora 白名单与 CSP
文件:/home/wren-dev/Porject/collabora-backup/coolwsd-config/coolwsd.xml
关键项:
<content_security_policy>frame-ancestors http://172.16.0.59:5173;</content_security_policy>
<alias_groups mode="groups">
<group>
<host desc="LAN Frontend" allow="true">http://172\.16\.0\.59:5173</host>
</group>
</alias_groups>
说明:
- 不再保留
nas.7bm.co,避免域名/IP 混用 - 不再使用带端口正则的 alias,之前会触发
Bad URI syntax/Invalid regular expression
4. Compose 参数
文件:/home/wren-dev/Porject/collabora-backup/docker-compose.yml
当前使用:
extra_params=--o:ssl.enable=false --o:ssl.termination=false --o:logging.level=warning --o:security.seccomp=false
说明:
- 已移除旧的
--o:net.frame_ancestors=http://* - 该参数会污染最终 CSP,导致浏览器报
frame-ancestors违规
本次修复过的问题
问题 1:登录跳转到了 localhost:5193
现象:
- 访问
5173后,响应头返回Location: http://localhost:5193/login?...
原因:
- 代理层转发头不完整
- Next 在开发环境下生成了错误绝对跳转
处理:
- 补
X-Forwarded-Host/X-Forwarded-Port - 补
proxy_redirect
问题 2:/coolws/ 没代理
现象:
WOPI已通- Collabora 页面仍起不来
原因:
coolws/newchild被打到 Next,返回 404
处理:
- 为
/coolws/增加代理到127.0.0.1:9980
问题 3:allowed host 正则写坏
现象:
- Collabora 日志出现:
Invalid regular expression for allowed hostBad URI syntax
原因:
- 使用了复杂 alias 正则:
http://172\.16\.0\.[0-9]{1,3}(:[0-9]{1,5})?
处理:
- 改为显式 host,不再用该正则
问题 4:浏览器控制台报 CSP / frame-ancestors 错误
现象:
Framing 'http://172.16.0.59:5173/' violates Content Security Policy directive...chrome-error://chromewebdata/
原因:
- Compose 里的旧
net.frame_ancestors=http://* coolwsd.xml里的 CSP 与实际 host 混用- 旧标签页中还混有
nas.7bm.co
处理:
- 删除旧
net.frame_ancestors content_security_policy只允许http://172.16.0.59:5173- 重建容器而不是简单 restart
重启方式
前后端
./leaudit.sh restart
Collabora
cd /home/wren-dev/Porject/collabora-backup
docker-compose up -d --force-recreate collabora
代理
docker restart leaudit-collabora-proxy
验证命令
前端入口
curl -I http://172.16.0.59:5173/
期望:
- 跳转到
http://172.16.0.59:5173/login?...
Collabora 发现接口
curl -I http://172.16.0.59:5173/hosting/discovery
期望:
200 OK
Collabora 页面入口
curl -I http://172.16.0.59:5173/browser/dist/cool.html
期望:
200 OKContent-Security-Policy里只出现172.16.0.59:5173
WOPI 文件接口
由页面实际触发,日志里应看到:
GET /wopi/files/... 200
浏览器测试要求
为避免旧的 nas.7bm.co 页面上下文污染:
- 关闭旧标签页
- 打开无痕窗口
- 直接访问
http://172.16.0.59:5173/login - 登录后进入文档页
- 不要从
nas.7bm.co页面里跳转到 IP 页面
已做的前端小收口
文件:legal-platform-frontend/lib/services/collabora.config.server.ts
处理:
- 移除了
ui_defaults中的SavedUIState=false
原因:
- Collabora 会打印:
unknown UI default's component SavedUIState - 该项不是必须,去掉后能减少无关告警
后续建议
- 如果后面要回切域名方案,不要与 IP 方案混用
- 需要整套一起回切:前端
.env、nginx、Collabora host/CSP 同步改回 - 如果当前 IP 方案稳定,可单独保留一份 docker 与 nginx 配置快照