ليس على عنوان IP وبروتوكول متطابقين في الوقت نفسه، إلا إذا كان أحد الوكيلين هو المدخل الأمامي الوحيد ويُمرّر حركة المرور المحددة إلى الآخر، أو إذا ربط كل منهما عنوان IP مختلفًا.
يصبح هذا سؤال توافق فعليًا عندما تنشر حاويتا وكيل كلتاهما المنفذين 80 و443 على المضيف لمجموعتي تطبيقات منفصلتين على جهاز واحد. ابدأ بمسار أو حساب قابل للتخلص منه، واحتفظ بالحالة السابقة العاملة متاحة، واحكم على التصميم استنادًا إلى عبء العمل الأصلي لا إلى اختبار اتصال لمرة واحدة.
حدّد الجهة التي تملك المورد المشترك
الفرع المدعوم هو مستمع واحد لكل زوج من عنوان IP والمنفذ، مع التوجيه خلفه. أما الفرع المتنافس فهو مستمعان مستقلان يتنافسان على المقبس نفسه. سجّل الإصدارات والهويات والعناوين ومسارات الربط والصلاحيات والحالة الحالية القابلة للملاحظة قبل تغيير أي من الفرعين.
تحدد قواعد ربط المقبس حد التوافق الأول. استخدمها لتقييد الادعاء، ثم تحقّق من السلوك نفسه على هذا الخادم المنزلي بالضبط بدل اعتبار ميزة موثقة دليلًا على أن التصميم الكامل يعمل.
اكتب قاعدة القرار قبل الاختبار: يجب أن ينجح الاختبار فقط عندما يملك الوكيل الأمامي المقصود كل مقبس عام، ويصل كل اسم مضيف إلى المصدر الخلفي الصحيح مع الشهادة المتوقعة؛ ويشمل الفشل أن يُبلغ بدء التشغيل بأن العنوان قيد الاستخدام، أو أن تصل حركة المرور إلى الوكيل الخطأ، أو أن ينهي TLS بشهادة موقع آخر. يمنع ذلك تفسير اتصال جزئي أو خروج أمر نظيف على أنه توافق شامل من البداية إلى النهاية.
غيّر مستمعًا أو مسارًا واحدًا في كل مرة
استخدم عامل تمييز واحدًا مضبوطًا: اعرض المستمعين الحاليين، واربط كل وكيل بعنوان IP اختباري مميز أو انقل أحدهما خلف الآخر، ثم اختبر توجيه Host وSNI وWebSocket والشهادات. أبقِ العميل وعبء العمل ومجموعة الملفات والحساب والتوقيت ثابتة حتى يكون المكوّن الذي تغيّر هو التفسير المحتمل الوحيد.
استخدم سلوك المنافذ المنشورة لاختيار الملاحظة الثانية المهمة لهذا المسار. التقط جانبي المعاملة: المحلّل أو المسار، والبروتوكول المتفاوض عليه، وهوية العملية، وحالة الخروج، ووقت الاستجابة، والبايتات المنقولة، وأي حدث استرداد.
كرّر الاختبار بعد حدث دورة الحياة المذكور في العنوان - إعادة الإنشاء أو إعادة الاتصال أو إعادة الربط أو إعادة التشغيل أو تجاوز الفشل أو تغيير العميل. لم ينجح التصميم إذا كان يعمل فقط ما دامت المقابس القديمة أو ذاكرات التخزين المؤقت أو بيانات الاعتماد لا تزال دافئة.
ss -ltnp '( sport = :80 or sport = :443 )'
docker ps --format '{{.Names}} {{.Ports}}'
استخدم أدلة التوجيه القابلة للملاحظة لاتخاذ القرار
نجاح: يملك الوكيل الأمامي المقصود وحده كل مقبس عام، ويصل كل اسم مضيف إلى المصدر الخلفي الصحيح مع الشهادة المتوقعة. احفظ الإصدارات الدقيقة والطوبولوجيا التي أنتجت هذه الحالة، لأن الاستنتاج ينطبق على تلك الشروط لا على كل تطبيق للبروتوكول.
فشل: يُبلغ بدء التشغيل بأن العنوان قيد الاستخدام، أو تصل حركة المرور إلى الوكيل الخطأ، أو ينهي TLS بشهادة موقع آخر. تحقّق من التبعيات المشتركة مثل DNS وMTU والهوية وحالة جدار الحماية وزمن استجابة التخزين والجلسات المخزنة مؤقتًا قبل إعلان مسؤولية أي من الفرعين الأساسيين.
استثناء: أوقف الربط العام الثاني، واستعد آخر مستمع عامل، واختر مدخلًا أماميًا واحدًا أو عناوين مضيف منفصلة. لا توسّع الصلاحيات، ولا تحذف بيانات المصدر، ولا تضعف أمان النقل، ولا تستبدل وحدة التخزين العاملة حتى تحدد ملاحظة قابلة للتكرار أي حدّ فشل.
أعد التحقق من العزل قبل عودة حركة الإنتاج
طبّق الإجراء المطابق فقط للفرع المرصود، ثم أعد تشغيل عبء العمل الأصلي. أبقِ التصميم فقط عندما يملك الوكيل الأمامي المقصود وحده كل مقبس عام، ويصل كل اسم مضيف إلى المصدر الخلفي الصحيح مع الشهادة المتوقعة عبر دورتين مناسبتين من دورات الحياة وتحت الحمل المتزامن المتوقع.
استخدم شبكات الوكيل المخصصة للتحقق من أقرب سير عمل تابع. يجب أن يظل سلوك الوصول والتوقيت والاسترداد فيه دون تغيير أثناء تفعيل التصميم الجديد.
توقّف وعد إلى الحالة المحفوظة إذا أبلغ بدء التشغيل بأن العنوان قيد الاستخدام، أو وصلت حركة المرور إلى الوكيل الخطأ، أو أنهى TLS بشهادة موقع آخر. صعّد المشكلة مع الطوابع الزمنية والإصدارات الدقيقة وأدلة المسار أو الربط وأصغر حالة لإعادة الإنتاج، بدل إضافة حل التفافي آخر.
طابق النتيجة مع تجاوزات DNS للوكيل العكسي حتى لا تنتقل المخاطر ببساطة إلى طبقة شبكة أو هوية أو نسخ احتياطي أو تخزين أخرى.
لذلك، في ما يخص امتلاك وكيلين عكسيين للمنفذين، فإن الإجابة المؤهلة هي الحكم الافتتاحي - وليست نعم غير مشروطة. حالة النجاح القابلة للملاحظة هي سطر القبول؛ وحالة الفشل هي سطر التراجع.
الأسئلة الشائعة
هل يتيح SO_REUSEPORT لوكلاء غير مرتبطين مشاركة المنفذ 443؟
ليس تصميمًا آمنًا لتوجيه أسماء المضيفين بين وكلاء مستقلين؛ استخدم مدخل TLS أماميًا واحدًا أو عناوين IP منفصلة.
هل يمكن لوكيل واحد تمرير TLS إلى الوكيل الثاني؟
نعم، عندما يعتمد التوجيه على SNI ويتولى الوكيل اللاحق إنهاء الشهادة لذلك الاسم المضيف.
هل تتعارض مستمعات IPv4 وIPv6؟
قد تتعارض، تبعًا لسلوك مقابس المكدس المزدوج وعناوين الربط؛ افحص عائلتي البروتوكول صراحةً.
الدعم والنصائح
المزيد للقراءة

هل يمكن لمعرض مُستضاف ذاتيًا الحفاظ على اقتران الصور الحية من Apple؟
قرار مشروط للخادم المنزلي بشأن إقران Live Photo من Apple، مع اختبارات مضبوطة وتفسير للنتائج وإمكانية التراجع وأسئلة شائعة مركزة.

هل يمكنك استيراد Google Takeout ونسخ الهاتف الاحتياطية إلى مكتبة صور واحدة؟
قرار مشروط لخادم منزلي لاستيراد الصور الموحّد، مع اختبارات مضبوطة وتفسير للنتائج والتراجع وأسئلة شائعة مركّزة.

هل يستطيع Immich استخدام مكتبة خارجية دون تولّي ملكية الملفات؟
قرار مشروط لخادم منزلي بشأن ملكية المكتبة الخارجية في Immich، مع اختبارات مضبوطة وتفسير للنتائج وإمكانية التراجع وأسئلة شائعة مركزة.

