قم بتثبيت Collabora خلف Nginx دون التأثير على WebSockets

ضع Collabora على اسم مضيف HTTPS مخصص في Nginx، وقم بتوجيه مسارات المحرر والاكتشاف الخاصة به إلى coolwsd، وقم بتمرير رؤوس ترقية WebSocket بشكل صريح على مسارات المقبس المباشر. بالنسبة لمضيف واحد، يمكن لـ Nginx إنهاء TLS العام وإرسال HTTP إلى Collabora على واجهة خاصة؛ إذا كان Nginx وCollabora يعملان في حاويات مختلفة، فاستخدم اسم خدمة Collabora على شبكتهما المشتركة بدلاً من 127.0.0.1.

يتم توجيه اتصال HTTPS الخاص بالمتصفح على المنفذ 443 عبر Nginx إلى Collabora عبر HTTP خاص على المنفذ 9980.
تخطيط الاتصال لهذا المثال: يستخدم المتصفح HTTPS على المنفذ 443، بينما يقوم Nginx بإعادة توجيه حركة المرور إلى Collabora على خادم HTTP خاص على المنفذ 9980.

يفترض هذا المثال أن المستخدمين يفتحون الموقع https://office.example.comوأن Nginx يتولى معالجة شهادته. منفذ الاستماع الافتراضي لـ Collabora هو 9980؛ استخدم المنفذ المتاح في بيئة النشر الخاصة بك. https://example.com/collabora/يتطلب استخدام بادئة عنوان URL مثل `<اسم_العنوان>` مسارًا منسقًا وإعدادات جذر الخدمة، لذا لن يتم تطبيق تكوين المضيف الجذر هذا دون تغيير.

1. حدد خريطة اتصال المصدر وWebSocket

في سياق Nginx http، أضف اسمًا للخادم 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 مشتركة، فيمكن server collabora:9980;استخدام اسم الخدمة الذي يتم حله في تلك الشبكة.

2. أضف المضيف الظاهري HTTPS ومسارات Collabora

serverداخل قسم HTTPS office.example.com، قم بتوجيه موارد المتصفح، ونقاط نهاية الاكتشاف، واتصالات WebSocket، ومسارات Collabora المتبقية. تتبع المواقع إرشادات وكيل Collabora. احتفظ بمواقع المقابس المحددة أعلى مسار cool/ الأوسع loolنطاقًا حتى يطبق Nginx رؤوس WebSocket بشكل صحيح.

تكوين خادم Nginx مع مواقع منفصلة لأصول المتصفح والاكتشاف والقدرات الموجهة إلى Collabora upstream.
مقتطف من مسار Nginx: يتم تمرير أصول المتصفح واكتشاف WOPI والقدرات جميعها إلى نفس مصدر Collabora.
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 ثانية بين كل قراءة وأخرى. اختر قيمة أطول من فترات الخمول التي تحتاجها جلساتك، أو اعتمد على حركة مرور WebSocket ping المناسبة حيثما كان ذلك مدعومًا.

3. قم بمطابقة وضع TLS الخاص بـ Collabora مع قفزة الوكيل

ينبغي للمستخدمين الوصول إلى Collabora عبر HTTPS، حتى عند استخدام بروتوكول HTTP في عملية الربط الخاصة بين Nginx وCollabora. في هذه الحالة، يجب ضبط الإعدادات coolwsdللتعامل مع الخادم الوكيل كمنهي لبروتوكول TLS: يتم تعطيل SSL على المستمع الداخلي، ويتم تفعيل إنهاء SSL. طبّق هذه الإعدادات بالطريقة التي تدعمها حزمة أو صورة الحاوية، ثم أعد تشغيل/تحميل Collabora وفقًا لما هو مذكور في وثائقها.

موقع Nginx لمسار Collabora WebSocket مع HTTP 1.1، وعناوين الترقية والاتصال، ومهلة القراءة.
مقتطف من مسار WebSocket: يسمح HTTP/1.1 ورؤوس Upgrade/Connection لـ Nginx بتوجيه اتصال المحرر المباشر؛ اضبط مهلة القراءة وفقًا لبيئتك.

استخدم بروتوكول HTTP فقط على شبكة خاصة موثوقة، وامنع الوصول العام إلى المنفذ 9980. إذا كانت السياسة تتطلب التشفير بين Nginx وCollabora، فاستخدم بروتوكول HTTPS وقم بضبط التحقق من الشهادة بشكل صحيح؛ لا تعطل التحقق لإخفاء عدم تطابق الشهادة. توضح وثائق إعدادات وكيل Collabora الفرق بين SSL على الوكيل وSSL بين الوكيل والخادم coolwsd.

قم أيضًا بتعيين عنوان URL الخاص بـ Collabora في تكامل التخزين إلى اسم مضيف HTTPS العام. بالنسبة إلى Nextcloud، يتطلب دليل الإدارة أن يكون المتصفح وكلا الخادمين قادرين على الوصول إلى بعضهما البعض عبر HTTP(S)، باستخدام بروتوكولات خارجية متطابقة. قم بتقييد قائمة السماح لـ WOPI لتقتصر على مضيف التخزين وعنوان Collabora المتوقعين؛ ولا توسع نطاقها بشكل كبير لحل خطأ في توجيه الوكيل.

4. اختبر التكوين من كلا الجانبين

تحقق من صيغة 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

افتح عناوين HTTPS هذه من متصفح المستخدم أيضًا. تتحقق هذه العناوين من إمكانية الوصول، ولكن استجابة الاكتشاف الناجحة وحدها لا تثبت نجاح تحرير المستند. افتح مستندًا واستخدم لوحة الشبكة في المتصفح للتأكد من تحميل الملفات واستمرار الاتصال /cool/.../wsمفتوحًا. عادةً ما يُظهر اتصال WebSocket الناجح عبر HTTP/1.1 رمز الاستجابة 405 101 Switching Protocols؛ وقد يختلف العرض الدقيق باختلاف المتصفح وبروتوكول النقل. إذا نجح هذا الإعداد القياسي في Firefox ولكنه فشل في Chromium، فافحص طريقة الطلب والبروتوكول. يُوثّق تقرير مشكلة Collabora المُنشأ للإصدار 25.04 اتصال WebSocket في Chromium عبر HTTP/2 باستخدام رمز CONNECTالاستجابة 405 واستقباله؛ ويبقى مفتوحًا كما تم التحقق منه في 9 أكتوبر 2026. هذا تقرير خاص بالإصدار، وليس سلوكًا عامًا. قارن إصدارات Collabora وNginx والمتصفح قبل تغيير إعدادات HTTP/2. راجع مشكلة Collabora رقم 12155 .

نافذة طرفية تعرض أمر curl لنقطة نهاية اكتشاف Collabora أعلى محرر مستندات فارغ عام.
عرض التحقق: يعرض الجهاز الطرفي فحص الاكتشاف المراد تشغيله، بينما يكون المحرر جاهزًا لاختبار منفصل على مستند حقيقي؛ لا توجد نتيجة ضمنية في هذا المثال.

في حال فشل عملية الاكتشاف، راجع سجل أخطاء Nginx وتحقق من اسم المضيف والمنفذ والبروتوكول الخاص بالخادم. إذا نجحت عملية الاكتشاف ولكن تعذر الاتصال أثناء التحرير، فتحقق من مسار WebSocket، والعناوين، والمهلة الزمنية، وسجلات Collabora. يشير خطأ تفويض WOPI إلى قائمة السماح الخاصة بمضيف التخزين. يوصي دليل استكشاف أخطاء Nextcloud Office وإصلاحها بالتحقق من إمكانية الوصول من المتصفح وNextcloud وCollabora، ثم مراجعة سجلات كلا الخادمين.

يشرح دليل Nginx WebSocket proxyingUpgrade سبب وضرورة Connectionتمرير قيمتي `and` بشكل صريح، وأهمية سلوك مهلة الخمول. راجع مرجع وحدة Nginx proxy لمعرفة سلوك التوجيه. بعد اجتياز الفحوصات، افتح مستندًا تجريبيًا، عدّله، احفظه، ثم أعد فتحه قبل دعوة المستخدمين للاعتماد على المسار الجديد.

اترك تعليقاً

قم بتثبيت Collabora خلف Nginx دون التأثير على WebSockets

قم بتثبيت Collabora خلف Nginx دون التأثير على WebSockets

قم بتكوين إنهاء Nginx TLS، ومسارات Collabora، ورؤوس WebSocket، ثم اختبر نقاط النهاية العامة قبل فتح المستندات الحقيقية.

منع انتهاء جلسات تحرير التعليمات البرمجية بعد 10 دقائق

منع انتهاء جلسات تحرير التعليمات البرمجية بعد 10 دقائق

تتبع انقطاع اتصال CODE لمدة 10 دقائق إلى الوكيل أو موازن التحميل أو مسار WebSocket، ثم قم بتصحيح المهلة الزمنية وتحقق من بقاء الجلسة متصلة.

انشر كود Collabora على Kubernetes باستخدام Helm

انشر كود Collabora على Kubernetes باستخدام Helm

قم بتثبيت مخطط Collabora Helm الرسمي، وقم بتكوين الوصول إلى WOPI وتقارب الدخول، وتحقق من النشر دون أخطاء الإعداد الشائعة.

تتبع مستند Collabora فارغ إلى الطبقة المعيبة

تتبع مستند Collabora فارغ إلى الطبقة المعيبة

استخدم طلبات المتصفح وسجلات WOPI وفحوصات البروكسي المستهدفة لمعرفة سبب فتح Collabora لمستند فارغ - واختر حلاً يتناسب مع الأدلة.

تفعيل التدقيق الإملائي متعدد اللغات في Collabora Online (رمز)

تفعيل التدقيق الإملائي متعدد اللغات في Collabora Online (رمز)

قم بتكوين قواميس CODE Docker ووضع علامات على مقاطع المستندات بشكل صحيح حتى تتلقى اللغات الإنجليزية والفرنسية واللغات الأخرى المدعومة التدقيق الإملائي الصحيح.

اضبط مؤقت الخمول في Collabora لعرض المستندات النشطة

اضبط مؤقت الخمول في Collabora لعرض المستندات النشطة

قم بضبط عتبة عدم النشاط لكل عرض في coolwsd وميزها عن تعتيم علامات التبويب الخلفية، وإلغاء تحميل المستندات، والحفظ التلقائي، وانتهاء صلاحية تسجيل الدخول.

تعطيل عمليات التحقق من تحديثات كود Collabora والاتصالات غير المرغوب فيها

تعطيل عمليات التحقق من تحديثات كود Collabora والاتصالات غير المرغوب فيها

أوقف عمليات التحقق المجدولة لتحديثات التعليمات البرمجية، وراجع الخدمات البعيدة الاختيارية، واستخدم عناصر التحكم في الشبكة الصادرة دون تعطيل تحرير المستندات.

قم بربط Seafile و Collabora باستخدام عنوان URL الصحيح لـ WOPI

قم بربط Seafile و Collabora باستخدام عنوان URL الصحيح لـ WOPI

قم بتمكين تحرير المستندات بشكل آمن في Seafile عن طريق تكوين عنوان URL لاكتشاف Collabora و HTTPS والوصول إلى WOPI لنشرك.

استعادة النسخ واللصق بين تطبيقات Collabora وتطبيقات سطح المكتب

استعادة النسخ واللصق بين تطبيقات Collabora وتطبيقات سطح المكتب

اختبر حافظة النظام، واضبط أذونات المتصفح، وحدد متى يحتاج تكامل Collabora المضمن إلى تغيير سياسة iframe.

توفير خطوط مخصصة في Collabora CODE Docker

توفير خطوط مخصصة في Collabora CODE Docker

قم بتثبيت ملفات الخطوط في Docker ولوحة نظام Collabora بحيث تظهر الخطوط المخصصة في المحرر ويتم عرضها بشكل صحيح في المستندات.