วาง Collabora ไว้ด้านหลัง Nginx โดยไม่ทำให้ WebSockets เสียหาย
ตั้งค่าการยุติ TLS ของ Nginx, เส้นทาง Collabora และส่วนหัว WebSocket จากนั้นทดสอบปลายทางสาธารณะก่อนเปิดเอกสารจริง
ติดตั้ง Collabora บนชื่อโฮสต์ HTTPS เฉพาะที่ Nginx ส่งต่อเส้นทางแก้ไขและเส้นทางการค้นหาไปยังcoolwsdและส่งส่วนหัวการอัปเกรด WebSocket อย่างชัดเจนในเส้นทางซ็อกเก็ตที่ใช้งานอยู่ สำหรับโฮสต์เดียว Nginx สามารถยุติ TLS สาธารณะและส่ง HTTP ไปยัง Collabora บนอินเทอร์เฟซส่วนตัวได้ หาก Nginx และ Collabora ทำงานในคอนเทนเนอร์ที่แตกต่างกัน ให้ใช้ชื่อบริการ Collabora บนเครือข่ายที่ใช้ร่วมกัน127.0.0.1แทน

ตัวอย่างนี้สมมติว่าผู้ใช้เปิดใช้งานhttps://office.example.comและ Nginx จัดการใบรับรองของตนเอง พอร์ตการฟังเริ่มต้นของ Collabora คือ 9980 โปรดใช้พอร์ตที่สามารถเข้าถึงได้ในการใช้งานของคุณ คำนำหน้า URL เช่นhttps://example.com/collabora/จำเป็นต้องมีการตั้งค่าเส้นทางที่ประสานงานและรูทบริการ ดังนั้นการกำหนดค่า root-host นี้จะไม่สามารถใช้งานได้โดยไม่เปลี่ยนแปลง
ในhttpบริบทของ Nginx ให้เพิ่มชื่ออัปสตรีมสำหรับ Collabora และแผนที่ที่ตั้งค่าส่วนหัวการเชื่อมต่อupgradeเฉพาะเมื่อไคลเอ็นต์ร้องขอ WebSocket เท่านั้น วางบล็อกนี้ไว้นอกserverบล็อกใดๆ เปลี่ยนที่อยู่หาก Nginx เข้าถึง Collabora ด้วยวิธีอื่น
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream coolwsd {
server 127.0.0.1:9980;
}
ถ้า Nginx เป็นคอนเทนเนอร์เอง127.0.0.1จะหมายถึงคอนเทนเนอร์ Nginx นั้น ไม่ใช่คอนเทนเนอร์ Collabora ในเครือข่าย Docker ที่ใช้ร่วมกัน upstream อาจเป็น โดยserver collabora:9980;ใช้ชื่อบริการที่สามารถระบุได้ในเครือข่ายนั้น
ภายในบล็อก HTTPS serverสำหรับoffice.example.comให้ส่งต่อสินทรัพย์ของเบราว์เซอร์ จุดสิ้นสุดการค้นหา การเชื่อมต่อ WebSocket และเส้นทาง Collabora ที่เหลือ ตำแหน่งต่างๆ เป็นไปตามคำแนะนำพร็อกซีของ Collabora ควรจัดเก็บตำแหน่งซ็อกเก็ตเฉพาะไว้เหนือ เส้นทาง cool/ ที่กว้างกว่า loolเพื่อให้ Nginx ใช้ส่วนหัว WebSocket ได้อย่างถูกต้อง

server {
listen 443 ssl;
server_name office.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/private-key.pem;
location ^~ /browser {
proxy_pass http://coolwsd;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
location ^~ /hosting/discovery {
proxy_pass http://coolwsd;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
location ^~ /hosting/capabilities {
proxy_pass http://coolwsd;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
location ~ ^/cool/(.*)/ws$ {
proxy_pass http://coolwsd;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600s;
}
location ^~ /cool/adminws {
proxy_pass http://coolwsd;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600s;
}
location ~ ^/(c|l)ool {
proxy_pass http://coolwsd;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
แทนที่เส้นทางของใบรับรองด้วยไฟล์สำหรับโฮสต์ของคุณ หากการติดตั้งของคุณไม่ได้ใช้คอนโซลผู้ดูแลระบบ/cool/adminwsตำแหน่งดังกล่าวอาจไม่จำเป็นสำหรับการแก้ไขเอกสาร/cool/.../wsเส้นทางหลักมีความสำคัญproxy_read_timeoutหนึ่งชั่วโมงในที่นี้เป็นเพียงตัวอย่าง ไม่ใช่ข้อกำหนดสากล ค่าเริ่มต้นของการหมดเวลาการอ่านพร็อกซีของ Nginx คือ 60 วินาทีระหว่างการอ่านที่ต่อเนื่องกัน เลือกค่าที่นานกว่าช่วงเวลาที่ไม่ได้ใช้งานที่เซสชันของคุณต้องการ หรือใช้การรับส่งข้อมูล ping ของ WebSocket ที่เหมาะสมหากรองรับ
ผู้ใช้ควรเข้าถึง Collabora ผ่าน HTTPS แม้ว่าการเชื่อมต่อส่วนตัวจาก Nginx ไปยัง Collabora จะใช้ HTTP ก็ตาม ในการตั้งค่าการยุติ TLS นั้น ให้กำหนดค่าcoolwsdให้พร็อกซีทำหน้าที่เป็นตัวยุติ TLS: ปิดใช้งาน SSL บนตัวรับฟังภายใน และเปิดใช้งานการยุติ SSL ใช้การตั้งค่าเหล่านี้ผ่านวิธีการที่รองรับโดยแพ็กเกจหรืออิมเมจคอนเทนเนอร์ของคุณ จากนั้นรีสตาร์ท/โหลด Collabora ใหม่ตามที่เอกสารกำหนด

ใช้ HTTP upstream เฉพาะในเครือข่ายส่วนตัวที่เชื่อถือได้ และบล็อกการเข้าถึงสาธารณะไปยังพอร์ต 9980 หากนโยบายกำหนดให้มีการเข้ารหัสระหว่าง Nginx และ Collabora ให้ใช้ HTTPS upstream และกำหนดค่าการตรวจสอบใบรับรองอย่างถูกต้อง อย่าปิดใช้งานการตรวจสอบเพื่อปกปิดความไม่ตรงกันของใบรับรองเอกสารการตั้งค่าพร็อกซี ของ Collabora แยกความแตกต่างระหว่าง SSL ที่พร็อกซีกับ SSL ระหว่างพร็อกซีและcoolwsdNginx
นอกจากนี้ ให้ตั้งค่า URL ของ Collabora ในการผสานรวมพื้นที่จัดเก็บข้อมูลเป็นชื่อโฮสต์ HTTPS สาธารณะ สำหรับ Nextcloud คู่มือการดูแลระบบระบุว่าเบราว์เซอร์และเซิร์ฟเวอร์ทั้งสองต้องสามารถเข้าถึงกันได้ผ่าน HTTP(S) โดยใช้โปรโตคอลภายนอกที่ตรงกัน จำกัดรายการอนุญาต WOPI ให้เฉพาะโฮสต์พื้นที่จัดเก็บข้อมูลและที่อยู่ Collabora ที่คาดไว้ อย่าขยายขอบเขตให้กว้างเกินไปเพื่อแก้ไขข้อผิดพลาดในการกำหนดเส้นทางพร็อกซี
ตรวจสอบไวยากรณ์ของ Nginx ก่อนทำการรีโหลด:
sudo nginx -t
sudo systemctl reload nginx
หาก Nginx ทำงานอยู่ในคอนเทนเนอร์ ให้ใช้ขั้นตอนการตรวจสอบและรีโหลดของคอนเทนเนอร์นั้นแทน จากโฮสต์ Nextcloud ให้ทดสอบเอนด์พอยต์สาธารณะของ Collabora โดยใช้ชื่อโฮสต์จริง:
curl -fsS https://office.example.com/hosting/discovery -o /dev/null
curl -fsS https://office.example.com/hosting/capabilities -o /dev/null
ลองเปิด URL HTTPS เหล่านั้นจากเบราว์เซอร์ของผู้ใช้ด้วยเช่นกัน เบราว์เซอร์จะตรวจสอบการเข้าถึง แต่การตอบสนองการค้นหาที่สำเร็จเพียงอย่างเดียวไม่ได้พิสูจน์ว่าการแก้ไขเอกสารใช้งานได้ เปิดเอกสารและใช้แผงเครือข่ายของเบราว์เซอร์เพื่อยืนยันว่าไฟล์ต่างๆ โหลดและ/cool/.../wsการเชื่อมต่อยังคงเปิดอยู่ การเชื่อม101 Switching Protocolsต่อ WebSocket HTTP/1.1 ที่สำเร็จมักจะแสดงผลลัพธ์ดังนี้ การแสดงผลที่แน่นอนอาจขึ้นอยู่กับเบราว์เซอร์และวิธีการส่งข้อมูล หากการตั้งค่ามาตรฐานนี้ใช้งานได้ใน Firefox แต่ล้มเหลวใน Chromium ให้ตรวจสอบวิธีการร้องขอและโปรโตคอล รายงานปัญหาของ Collabora ที่เปิดไว้สำหรับเวอร์ชัน 25.04 ได้บันทึกการใช้งาน WebSocket ของ Chromium ผ่าน HTTP/2 CONNECTและได้รับรหัส 405 ซึ่งยังคงเปิดอยู่เมื่อตรวจสอบเมื่อวันที่ 9 ตุลาคม 2026 นี่เป็นรายงานเฉพาะเวอร์ชัน ไม่ใช่พฤติกรรมทั่วไป เปรียบเทียบเวอร์ชัน Collabora, Nginx และเบราว์เซอร์ของคุณก่อนที่จะเปลี่ยนการตั้งค่า HTTP/2 ดูปัญหา Collabora หมายเลข 12155

หากการค้นหาล้มเหลว ให้ตรวจสอบบันทึกข้อผิดพลาดของ Nginx และตรวจสอบชื่อโฮสต์ พอร์ต และโปรโตคอลต้นทาง หากการค้นหาทำงานได้ แต่ไม่สามารถเชื่อมต่อเพื่อแก้ไขได้ ให้ตรวจสอบเส้นทาง WebSocket ส่วนหัว การหมดเวลา และบันทึกของ Collabora ข้อผิดพลาดในการอนุญาต WOPI ชี้ไปที่รายการอนุญาตของโฮสต์จัดเก็บข้อมูลคู่มือการแก้ไขปัญหา Nextcloud Officeแนะนำให้ตรวจสอบการเข้าถึงจากเบราว์เซอร์ Nextcloud และ Collabora จากนั้นตรวจสอบบันทึกของเซิร์ฟเวอร์ทั้งสอง
คู่มือการใช้งาน Nginx WebSocket proxyingอธิบายถึงเหตุผลว่าทำไมจึงต้องส่งค่า `id` Upgradeและ `id` อย่างชัดเจน และทำไมพฤติกรรมการหมดเวลาเมื่อไม่มีการใช้งานจึงมีความสำคัญ ดู ข้อมูลอ้างอิงโมดูล proxy ของ Nginxสำหรับพฤติกรรมของคำสั่ง เมื่อตรวจสอบผ่านแล้ว ให้เปิด แก้ไข บันทึก และเปิดเอกสารทดสอบอีกครั้งก่อนที่จะให้ผู้ใช้ใช้งานเส้นทางใหม่Connection
ตั้งค่าการยุติ TLS ของ Nginx, เส้นทาง Collabora และส่วนหัว WebSocket จากนั้นทดสอบปลายทางสาธารณะก่อนเปิดเอกสารจริง
ตรวจสอบหาสาเหตุของการตัดการเชื่อมต่อ CODE ที่กินเวลา 10 นาที ว่าเกิดจากพร็อกซี โหลดบาลานเซอร์ หรือเส้นทาง WebSocket จากนั้นแก้ไขค่าหมดเวลาและตรวจสอบว่าเซสชันยังคงเชื่อมต่ออยู่หรือไม่
ติดตั้ง Helm chart อย่างเป็นทางการของ Collabora กำหนดค่าการเข้าถึง WOPI และความสัมพันธ์ของ ingress และตรวจสอบการปรับใช้โดยปราศจากข้อผิดพลาดในการตั้งค่าทั่วไป
ใช้คำขอจากเบราว์เซอร์ บันทึก WOPI และการตรวจสอบพร็อกซีแบบเจาะจงเพื่อค้นหาสาเหตุที่ Collabora เปิดเอกสารว่างเปล่า และเลือกวิธีแก้ไขที่เหมาะสมกับหลักฐานที่พบ
ตั้งค่าพจนานุกรมและแท็กข้อความในเอกสารของ CODE Docker ให้ถูกต้อง เพื่อให้ภาษาอังกฤษ ภาษาฝรั่งเศส และภาษาอื่นๆ ที่รองรับ ได้รับการตรวจสอบการสะกดคำอย่างถูกต้อง
ปรับค่าเกณฑ์การไม่ใช้งานต่อการแสดงผลใน coolwsd และแยกความแตกต่างจากค่าการหรี่แสงแท็บพื้นหลัง การปิดเอกสาร การบันทึกอัตโนมัติ และการหมดอายุการเข้าสู่ระบบ
หยุดการตรวจสอบการอัปเดต CODE ตามกำหนดเวลา ตรวจสอบบริการระยะไกลเสริม และใช้การควบคุมเครือข่ายขาออกโดยไม่ทำให้การแก้ไขเอกสารหยุดชะงัก
เปิดใช้งานการแก้ไขเอกสารอย่างปลอดภัยใน Seafile โดยการกำหนดค่า URL การค้นหาของ Collabora, การเข้าถึง HTTPS และ WOPI สำหรับการใช้งานของคุณ
ทดสอบคลิปบอร์ดของระบบ ปรับสิทธิ์การเข้าถึงของเบราว์เซอร์ และระบุว่าเมื่อใดที่การผสานรวม Collabora ที่ฝังอยู่จำเป็นต้องมีการเปลี่ยนแปลงนโยบาย iframe
ติดตั้งไฟล์ฟอนต์ลงใน Docker และ systemplate ของ Collabora เพื่อให้แบบอักษรที่กำหนดเองปรากฏในโปรแกรมแก้ไขและแสดงผลได้อย่างถูกต้องในเอกสาร