เอกสารอาจค้างหลังจากที่คุณตั้งค่า Collabora CODE ให้อยู่หลัง HTTPS เนื่องจากพร็อกซีและ CODE ไม่เห็นด้วยเกี่ยวกับจุดสิ้นสุดของ TLS หรือพร็อกซีอาจบล็อกการรับส่งข้อมูล WebSocket กำหนดค่า Nginx ให้แสดงใบรับรองสาธารณะ ส่งต่อไปยังตัวรับฟัง CODE ส่วนตัว และส่งผ่านเส้นทาง WebSocket การตั้งค่า CODE คือssl.enable=falseและssl.termination=true
ตัวอย่างนี้ใช้ Nginx บนโฮสต์ Docker หากต้องการใช้พร็อกซีในคอนเทนเนอร์อื่น ให้ใช้เครือข่ายส่วนตัวของ Docker แทน ดูการตั้งค่าพร็อกซี ของ Collabora และคู่มืออิมเมจ Docker ของ CODEสำหรับตัวเลือกเฉพาะเวอร์ชัน
ทำความเข้าใจเกี่ยวกับการเปลี่ยนแปลงการยุติ SSL
การยุติการเชื่อมต่อ TLS หมายความว่า Nginx จะจัดการการเชื่อมต่อ HTTPS และใบรับรองของเบราว์เซอร์ ในขณะที่ CODE ใช้ HTTP บนพอร์ต 9980 อยู่เบื้องหลัง ควรเก็บ Listener นั้นไว้เป็นส่วนตัว: ผูกมันเข้ากับ Loopback บนโฮสต์เดียว หรือใช้เครือข่าย Docker ส่วนตัว หากการรับส่งข้อมูลจากพร็อกซีไปยัง CODE ผ่านเครือข่ายที่ไม่น่าเชื่อถือ ควรปกป้องลิงก์นั้นด้วย TLS หรือ Tunnel
เบราว์เซอร์ใช้ HTTPS ในการเชื่อมต่อกับ Nginx ส่วน HTTP นั้นจำกัดอยู่เฉพาะการเชื่อมต่อส่วนตัวระหว่างพร็อกซีกับ CODE เท่านั้น
เตรียมภาชนะและใบรับรองให้พร้อม
- เลือกชื่อโฮสต์สาธารณะสร้างระเบียน DNS ที่
office.example.comชี้ไปยังพร็อกซี Nginx ขอรับใบรับรองสำหรับชื่อโฮสต์นั้น และติดตั้งห่วงโซ่ใบรับรองและคีย์ส่วนตัวบนพร็อกซี
- รักษาพอร์ตของ CODE ให้เป็นส่วนตัวสำหรับ Nginx ที่ติดตั้งโดยตรงบนโฮสต์ Docker ให้เผยแพร่พอร์ตของคอนเทนเนอร์เฉพาะบน loopback เท่านั้น ใน Compose การแมปที่เกี่ยวข้องคือ
127.0.0.1:9980:9980อย่าเผยแพร่9980:9980บนทุกอินเทอร์เฟซของโฮสต์ เว้นแต่ไฟร์วอลล์และการออกแบบเครือข่ายจะจำกัดไว้อย่างชัดเจน
- ตั้งค่าโหมด TLS ของ CODEในบริการ Compose ให้เพิ่มตัวเลือกทั้งสองลงในการกำหนดค่า CODE ตัวอย่างด้านล่างใช้ตัวแปรภาพเพื่อให้คุณสามารถตรึงแท็กที่คุณตรวจสอบและทดสอบได้อย่างแม่นยำ
การผูกกับ 127.0.0.1 ทำให้สามารถเข้าถึงตัวรับฟัง CODE ได้เฉพาะจากโฮสต์ Docker เท่านั้น
ตัวเลือกเหล่านี้บอกให้ 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
- เพิ่มโฮสต์เสมือน HTTPSใส่ตำแหน่งที่ตั้งต่อไปนี้ลงในบล็อกเซิร์ฟเวอร์ Nginx สำหรับชื่อโฮสต์สาธารณะของ Collabora แทนที่ชื่อโฮสต์และเส้นทางใบรับรองในตัวอย่าง การกำหนดค่านี้ใช้สำหรับ URL ระดับรากของ Collabora ไม่ใช่ URL ที่ติดตั้งอยู่ภายใต้เส้นทางเช่น
/office/.
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จำเป็น ต้องมีส่วนหัว HTTP/1.1 และ Upgrade เพื่อให้ Nginx สามารถส่งผ่าน WebSockets ได้ การตั้งค่าหมดเวลาอ่านนานจะช่วยให้เซสชันการแก้ไขเปิดอยู่ตลอดเวลา ดู เอกสารประกอบเกี่ยวกับการพร็อกซี WebSocketของ/cool/adminwsNginx
ส่งต่อข้อมูลสินทรัพย์ของตัวแก้ไข การค้นหา WOPI และเอนด์พอยต์ความสามารถไปยังตัวรับฟัง CODE ตัวเดียวกัน
เส้นทาง WebSocket หลักต้องการ HTTP/1.1 และส่วนหัว Upgrade มิฉะนั้นโปรแกรมแก้ไขอาจโหลดไม่สามารถใช้งานได้
ส่งต่อการเชื่อมต่อ WebSocket สำหรับการจัดการ และเส้นทางการถ่ายโอนเอกสารที่เหลือทั้งหมดด้วยเช่นกัน
ทำการเปลี่ยนแปลงและตรวจสอบพฤติกรรมที่เกี่ยวข้องกับเวอร์ชัน
- ตรวจสอบความถูกต้องของ Nginx ก่อนทำการรีโหลด เรียกใช้คำสั่ง ` npm run src`
nginx -tดำเนินการต่อเฉพาะเมื่อ Nginx แจ้งว่าการทดสอบการกำหนดค่าสำเร็จ จากนั้นจึงทำการรีโหลด Nginx ด้วยคำสั่งบริการปกติของระบบของคุณ
- สร้างคอนเทนเนอร์ CODE ขึ้นใหม่ใช้การเปลี่ยนแปลง Compose ด้วยคำสั่ง `git
docker compose up -d collaboralogs` ตรวจสอบบันทึกของคอนเทนเนอร์เพื่อหาข้อผิดพลาดในการเริ่มต้น และยืนยันว่าการกำหนดค่าที่ใช้งานอยู่มีตัวเลือก SSL ทั้งสองแบบ
เรียกใช้การทดสอบไวยากรณ์ก่อนโหลดหน้าเว็บใหม่ เพื่อป้องกันไม่ให้บล็อกเซิร์ฟเวอร์ที่มีรูปแบบไม่ถูกต้องไปรบกวนเว็บไซต์อื่น
สำหรับข้อมูลอ้างอิงเวอร์ชันนั้น ที่เก็บข้อมูลของ Collabora บันทึกรายงานเมื่อวันที่ 22 กรกฎาคม 2026 ว่าการcoolwsd --probeตรวจสอบสถานะสุขภาพในตัวของ CODE เวอร์ชัน 26.04.2.2 และเวอร์ชันที่ใหม่กว่า สามารถตรวจสอบ HTTPS บนพอร์ต 9980 ได้ แม้ว่า TLS จะสิ้นสุดที่พร็อกซีก็ตาม ซึ่งอาจทำให้คอนเทนเนอร์ถูกระบุว่าไม่สมบูรณ์ในขณะที่ปลายทางสาธารณะตอบสนองได้ โปรดตรวจสอบบันทึกปัญหาสำหรับแท็กรูปภาพของคุณทดสอบปลายทางสาธารณะและเซสชันการแก้ไขก่อนที่จะถือว่าสถานะสุขภาพเพียงอย่างเดียวเป็นหลักฐานของความล้มเหลวของ TLS โปรดคงการตรวจสอบสถานะสุขภาพไว้จนกว่าจะมีตัวตรวจสอบอื่นมาแทนที่
ตรวจสอบการค้นพบ HTTPS และเซสชันการแก้ไขจริง
ส่งคำขอhttps://office.example.com/hosting/discoveryผ่านเบราว์เซอร์หรือด้วยcurl. ควรส่งคืน XML การค้นหา WOPI ผ่าน HTTPS โดยใช้ URL ที่ใช้ชื่อโฮสต์ HTTPS สาธารณะ คำเตือนเกี่ยวกับใบรับรองบ่งชี้ว่ามีปัญหาเกี่ยวกับชื่อโฮสต์หรือใบรับรอง URL HTTP บ่งชี้ว่าโหมด TLS หรือรูปแบบการส่งต่อไม่ตรงกัน ข้อผิดพลาด 502 บ่งชี้ว่าพร็อกซีไม่สามารถเข้าถึง CODE ได้
ถัดไป เปิดเอกสารทดสอบจากโฮสต์ WOPI ที่เชื่อมต่ออยู่ และตรวจสอบว่าการแก้ไขใช้งานได้ ในเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์/cool/.../wsคำขอควรสร้างการเชื่อมต่อ WebSocket หากการค้นหาใช้งานได้ แต่การแก้ไขค้าง ให้ตรวจสอบตำแหน่งและส่วนหัวของ WebSocket ยืนยันว่าการรวมระบบอนุญาตให้โฮสต์ WOPI และชี้ไปยังhttps://office.example.com.
การตั้งค่าสำเร็จ:ใบรับรองได้รับการเชื่อถือ การค้นหาใช้ HTTPS พอร์ต 9980 ยังคงเป็นส่วนตัว และเอกสารทดสอบสามารถเปิดและแก้ไขผ่าน WebSocket ได้