bin/init --tls، وNGINX_* وTLS_* في overleaf.rc)؛ راجع وكيل TLS بالنسبة إلى Toolkit.
ما يجب على الوكيل فعله
- تمرير اتصالات WebSocket (
/socket.io). - السماح بطلبات مدتها 10 دقائق (عمليات الترجمة الطويلة) وأجسام طلبات بحجم 50 MB (عمليات الرفع)، أو
MAX_UPLOAD_SIZE. - إبقاء مهلة keep-alive للاتصالات الخاملة نحو الـ pods أقل من 65 ثانية، وهي مهلة nginx داخل الـ pod.
- إرسال
X-Forwarded-ForوX-Forwarded-Proto: https. - مع عدة نسخ متماثلة، إبقاء المستخدم على نسخة متماثلة واحدة، راجع التوسّع الأفقي.
ConfigMap
X-Forwarded-Proto: https من عنوان موثوق، يعتقد Ayakaleaf Pro أن الطلبات تصل عبر HTTP ولا يضبط ملف تعريف ارتباط الجلسة الآمن: فتفشل عمليات تسجيل الدخول عندئذٍ. اضبط OVERLEAF_SECURE_COOKIE فقط عندما يصل المستخدمون فعلًا إلى الموقع عبر HTTPS؛ فأي قيمة تفعّله، حتى "false".
مثال على HAProxy
لإنهاء HTTPS في الـ DaemonSet الخاص بـ HAProxy من التوسّع الأفقي، ضع الشهادة ومفتاحها في ملف PEM واحد وفي Secret:80-haproxy.yaml:
80-haproxy.yaml (changes)
config-hash حتى يُعاد تشغيل HAProxy، ثم اضبط الـ ConfigMap كما هو موضّح أعلاه وأعد تشغيل النسخ المتماثلة.
تحافظ إعادة التوجيه على منفذ الطلب: وهذا يناسب موازن أحمال على المنفذين 80 و443، لكنها على منافذ NodePort ترسل http://host:30081 إلى https://host:30081. ومن دون موازن أحمال في المقدّمة، احذف سطر إعادة التوجيه وأعطِ المستخدمين العنوان https://...:30443.
الاختبار على Kubernetes
على Kubernetes 1.37 مع ثلاث نسخ متماثلة وHAProxy يُنهي HTTPS كما هو موضّح أعلاه، ومع ضبطOVERLEAF_SITE_URL على https:// وضبط OVERLEAF_SECURE_COOKIE: فعّل المستخدمون حساباتهم عبر روابط https://، وسجّلوا الدخول بملف تعريف ارتباط جلسة مُعلَّم بـ Secure، ورفعوا المشاريع وترجموها مع جلب ملف PDF، وبقوا على نسختهم المتماثلة، وفتحوا WebSocket الخاص بالمحرّر (wss)، واستنسخوا ودفعوا باستخدام Git عبر HTTPS. أما طلبات http:// على منفذ NodePort فقد أُعيد توجيهها إلى https:// مع المنفذ نفسه، كما هو موضّح أعلاه.
