在 Nginx 後端執行 Collabora 程式碼並啟用 TLS 終止

將 Collabora CODE 置於 HTTPS 之後,文件可能會出現延遲,因為代理伺服器和 CODE 對 TLS 終止位置的設定不一致,或者代理伺服器丟棄了 WebSocket 流量。請設定 Nginx 以提供公鑰證書,將流量轉送至私有的 CODE 監聽器,並傳遞 WebSocket 路由。 CODE 設定ssl.enable=false如下ssl.termination=true:

本範例使用 Docker 主機上的 Nginx。如果要在另一個容器中使用代理,請改用私人 Docker 網路。有關特定版本的選項,請參閱 Collabora 的代理設定和CODE Docker 映像指南。

了解 SSL 終止變更

TLS 終止表示 Nginx 處理瀏覽器的 HTTPS 連線和證書,而 CODE 則在其後方使用 9980 連接埠的 HTTP 連線。請確保該監聽器私有:將其綁定到單一主機上的回環位址,或使用私有的 Docker 網路。如果代理程式到 CODE 的流量經過不受信任的網絡,請使用 TLS 或隧道保護該連結。

網路拓撲圖顯示,瀏覽器 HTTPS 請求在私人 HTTP 請求到達 127.0.0.1 連接埠 9980 上的 Collabora CODE 容器之前,先在 Nginx 處終止。
瀏覽器使用 HTTPS 連線到 Nginx;HTTP 僅限於代理程式和 CODE 之間的私人連結。

準備容器和證書

  1. 選擇公網主機名稱。建立一條指向 Nginx 代理程式的 DNS 記錄office.example.com。取得與該主機名稱完全匹配的證書,並將證書鍊和私鑰安裝到代理伺服器上。
  2. 保持 CODE 端口私有。對於直接安裝在 Docker 主機上的 Nginx,僅透過回環介面發布容器連接埠。在 Compose 中,相關的映射關係為 [此處應填入映射關係127.0.0.1:9980:9980]。除非防火牆和網路設計明確限制,否則不要9980:9980在所有主機介面上發布。
  3. 設定 CODE 的 TLS 模式。在 Compose 服務中,將這兩個選項新增至 CODE 配置中。以下範例使用圖像變量,以便您可以精確定位已審核和測試過的標籤。
Docker Compose 編輯器顯示 Collabora 服務端口綁定到 127.0.0.1 的 9980 端口
綁定到 127.0.0.1 可使 CODE 監聽器只能從 Docker 主機存取。
為 Collabora CODE 設定 Docker Compose 環境變量,ssl.enable=false 和 ssl.termination=true
這些選項告訴 CODE,TLS 由反向代理處理。
services:
  collabora:
    image: ${COLLABORA_CODE_IMAGE}
    restart: unless-stopped
    ports:
      - "127.0.0.1:9980:9980"
    environment:
      extra_params: "--o:ssl.enable=false --o:ssl.termination=true"

設定COLLABORA_CODE_IMAGE為已測試且已固定的鏡像標籤。保留您的 WOPI 主機允許清單和驗證設定;TLS 終止不會取代它們。如果 Nginx 是另一個 Docker 服務,請省略主機連接埠映射,並將其代理到http://collabora:9980共用的私有網路上。

配置 Nginx 以終止 TLS 並代理 CODE 流量

  1. 新增 HTTPS 虛擬主機。將下列位置新增至 Nginx 伺服器區塊中,作為公共 Collabora 主機名稱的設定。替換範例主機名稱和憑證路徑。此配置適用於根層級的 Collabora URL,而不是掛載在類似 `/etc/collabora/` 路徑下的 URL /office/。
包含 TLS 監聽器、office.example.com 伺服器名稱和憑證檔案路徑的 Nginx 設定片段
Nginx 持有公共證書,並透過 HTTPS 監聽 Collabora 主機名稱。
server {
    listen 443 ssl;
    server_name office.example.com;
    ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;

    location ^~ /browser {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location ^~ /hosting/discovery {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location ^~ /hosting/capabilities {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location ~ ^/cool/(.*)/ws$ {
        proxy_pass http://127.0.0.1:9980;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 36000s;
    }
    location ^~ /cool/adminws {
        proxy_pass http://127.0.0.1:9980;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 36000s;
    }
    location ~ ^/(c|l)ool {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

轉送編輯器資源、發現和功能路由。這些/cool/.../ws位置/cool/adminws需要 HTTP/1.1 和 Upgrade 標頭,以便 Nginx 可以建立 WebSocket 隧道;較長的讀取逾時時間會保持編輯會話開啟。請參閱 Nginx 的WebSocket 代理文件。

Nginx location 阻止將瀏覽器和主機發現路徑轉送到私人 CODE 監聽器
將編輯器資源、WOPI 發現和功能端點轉發到同一個 CODE 監聽器。
Nginx WebSocket 位置,用於 HTTP 1.1、Upgrade 和 Connection 標頭以及長讀取逾時的酷炫路徑
主 WebSocket 路由需要 HTTP/1.1 和 Upgrade 標頭,否則編輯器可能無法載入並投入使用。
用於 Cool 管理 WebSocket 和 Collabora 酷炫或 lool 請求路徑的 Nginx 配置
同時轉送管理 WebSocket 和其餘文件傳輸路徑。

應用變更並檢查版本敏感行為

  1. 重新載入 Nginx 前請先驗證其設定。運行命令nginx -t。僅當 Nginx 報告設定測試成功時才繼續;然後使用系統正常的 service 命令重新載入 Nginx。
  2. 重新建立 CODE 容器。應用 Compose 更改docker compose up -d collabora。檢查容器日誌中的啟動錯誤,並確認活動配置包含所有 SSL 選項。
終端機視窗已準備好使用 nginx -t 命令來驗證反向代理設定。
在重新載入之前執行語法測試,以防止格式錯誤的伺服器區塊中斷其他網站。

關於版本信息,Collabora 的倉庫在 2026 年 7 月 22 日記錄了一份報告,指出 CODE 26.04.2.2 及更高版本中的內置coolwsd --probe健康檢查功能,即使 TLS 連接在代理伺服器終止,仍可能檢查 9980 端口上的 HTTPS 連接。這會導致容器被標記為不健康,而公共端點卻有回應。請檢視您的鏡像標籤對應的問題記錄;在僅憑健康狀態就斷定 TLS 連線失敗之前,請先測試公共端點和編輯工作階段。除非有其他監控工具替代,否則請保留健康檢查功能。

驗證 HTTPS 發現和實際編輯會話

https://office.example.com/hosting/discovery在瀏覽器中或透過其他方式發出請求curl。它應該透過 HTTPS 傳回 WOPI 發現 XML,其中 URL 使用公共 HTTPS 主機名稱。憑證警告表示主機名稱或憑證有問題;HTTP URL 表示 TLS 模式或轉送方案不符;502 錯誤表示代理無法連線到 CODE。

接下來,從已連接的 WOPI 主機開啟一個測試文檔,並確認編輯功能正常。在瀏覽器開發者工具中,請求/cool/.../ws應該會建立 WebSocket 連線。如果發現過程正常但編輯卡住,請檢查 WebSocket 連線的位置和標頭。確認整合允許存取 WOPI 主機並指向正確的位址https://office.example.com。

設定成功:憑證受信任,發現使用 HTTPS,連接埠 9980 保持私有,測試文件透過 WebSocket 開啟和編輯。

留下評論

在 Nginx 後端執行 Collabora 程式碼並啟用 TLS 終止

在 Nginx 後端執行 Collabora 程式碼並啟用 TLS 終止

讓 Nginx 負責 Collabora CODE 容器的 HTTPS,正確轉送編輯 WebSocket,並在不暴露連接埠 9980 的情況下驗證公共端點。

在 Collabora 移動鍵盤開啟時保持文字可見

在 Collabora 移動鍵盤開啟時保持文字可見

解決 Collabora Online 中行動瀏覽器鍵盤遮擋文字的問題,提供快速解決方法,並對瀏覽器、嵌入式 WebView 和宿主頁面進行單獨檢查。

在 ONLYOFFICE 中停止不必要的列印和下載

在 ONLYOFFICE 中停止不必要的列印和下載

為 ONLYOFFICE 連結、會議室成員或 Docs API 會話設定列印和下載限制,然後從收件者帳戶驗證限制。

為 ONLYOFFICE 工作區安排可靠的備份

為 ONLYOFFICE 工作區安排可靠的備份

在 ONLYOFFICE Workspace 中設定備份目標、計畫、郵件覆蓋範圍和保留期限,然後驗證檔案是否已準備好進行復原。

使用官方的 Compose 檔案部署 ONLYOFFICE Docs 企業版

使用官方的 Compose 檔案部署 ONLYOFFICE Docs 企業版

啟動企業版 Docker Compose 堆疊,持久化其授權和數據,安全地配置 JWT,並確認編輯器已準備好整合。

使用可重複使用的 ONLYOFFICE 巨集清理電子表格文本

使用可重複使用的 ONLYOFFICE 巨集清理電子表格文本

使用 ONLYOFFICE JavaScript 巨集,透過安全的審閱工作流程,從指定的電子表格區域中刪除非列印字元並移除多餘的空格。

變更 ONLYOFFICE 工作區的預設儲存位置

變更 ONLYOFFICE 工作區的預設儲存位置

將入口網站資料從預設磁碟移至支援的雲端儲存供應商,或透過變更主機磁碟區來對應安全地遷移 Docker 資料。

從 Linux 系統中徹底移除 ONLYOFFICE 文件伺服器

從 Linux 系統中徹底移除 ONLYOFFICE 文件伺服器

確定文件伺服器使用的是 Linux 軟體包還是 Docker,僅刪除其元件,並檢查剩餘數據,避免誤刪共享服務。

透過找到瓶頸來消除 ONLYOFFICE 協同編輯延遲

透過找到瓶頸來消除 ONLYOFFICE 協同編輯延遲

追蹤協作編輯速度慢的原因,例如 Docker 資源壓力、代理連接或文件加載,然後選擇與您的測量結果相符的修復方案。

在 Docker 中為 ONLYOFFICE Docs 配置 HTTPS

在 Docker 中為 ONLYOFFICE Docs 配置 HTTPS

選擇 TLS 終止位置,安全地掛載受信任的憑證和私鑰,並驗證對 Docker 化的 ONLYOFFICE Docs 伺服器的 HTTPS 存取。