كيفية عمل بوابة تطبيق

توضح هذه المقالة كيفية قبول بوابة التطبيق للطلبات الواردة وتوجيهها إلى الخلفية.

كيفية قبول بوابة تطبيق لطلب

كيفية قبول بوابة تطبيق لطلب

  1. قبل عميل بإرسال طلب إلى بوابة تطبيق، فإنه يحل اسم المجال من بوابة التطبيق باستخدام خادم نظام اسم المجال (DNS). يتحكم Azure في إدخال DNS لأن كافة بوابات التطبيق في مجال azure.com.

  2. يقوم DNS Azure بإرجاع عنوان IP إلى العميل، وهو عنوان IP الأمامية من بوابة التطبيق.

  3. تقبل بوابة التطبيق نسبة استخدام الشبكة الواردة على مستمع واحد أو أكثر. المستمع هو كيان منطقي يتحقق من طلبات الاتصال. تم تكوينه باستخدام عنوان IP الأمامي والبروتوكول ورقم المنفذ للاتصالات من العملاء إلى بوابة التطبيق.

  4. إذا كان جدار حماية تطبيق ويب (WAF) قيد الاستخدام، فإن بوابة التطبيق تتحقق من عناوين الطلبات، ويتحقق النص الأساسي، إذا كان موجودًا، من قواعد WAF. يحدد هذا الإجراء ما إذا كان الطلب طلبًا صالحًا أم يمثل تهديدًا أمنيًا. إذا كان الطلب صالحاً، يتم توجيهه إلى الواجهة الخلفية. إذا كان الطلب غير صالح وكان WAF في وضع الوقاية، يتم حظره كتهديد أمني. إذا كان في حالة الكشف، يتم تقييم الطلب وتسجيله، ولكن لا يزال يتم إعادة توجيهه إلى خادم الواجهة الخلفية.

يمكن استخدام بوابة تطبيق Azure كموازن تحميل تطبيق داخلي أو كموازن تحميل تطبيقات مواجه للإنترنت. تستخدم بوابة التطبيق المواجهة للإنترنت عناوين IP العامة. اسم DNS لبوابة تطبيق مواجهة الإنترنت قابل للحل علنا إلى عنوان IP العام الخاص به. نتيجة لذلك، يمكن لبوابات التطبيقات المواجهة للإنترنت توجيه طلبات العميل من الإنترنت.

تستخدم بوابات التطبيق الداخلية عناوين IP خاصة فقط. إذا كنت تستخدم منطقة DNS مخصصة أو خاصة، يجب أن يكون اسم المجال قابلا للحل داخليا إلى عنوان IP الخاص لبوابة التطبيق. لذلك، يمكن للموازنات التحميل الداخلية توجيه طلبات من العملاء الذين يمكنهم الوصول إلى شبكة اتصال ظاهرية لبوابة التطبيق فقط.

كيفية توجيه بوابة تطبيق لطلب

إذا كان الطلب صالحا ولم يتم حظره من قبل WAF، تقيم بوابة التطبيق قاعدة التحويل الطلب المقترنة بمستمع. يحدد هذا الإجراء مجموعة الواجهة الخلفية لتوجيه الطلب إليه.

استنادًا إلى قاعدة التحويل الطلب، تحدد بوابة التطبيق ما إذا كان يجب توجيه كافة الطلبات على وحدة الإصغاء إلى تجمع خلفي محدد، أو توجيه الطلبات إلى تجمعات خلفية مختلفة استنادًا إلى مسار URL، أو إعادة توجيه الطلبات إلى منفذ آخر أو موقع خارجي.

إشعار

تعالج القواعد بالترتيب الذي يتم سردها به في المدخل ل V1 SKU.

عند تحديد بوابة التطبيق تجمع الخلفية يرسل الطلب إلى أحد الخوادم الخلفية سليمة في التجمع (y.y.y.y). يتم تحديد صحة الخادم بواسطة فحص صحة. إذا كان تجمع الخلفية يحتوي على خوادم متعددة، يستخدم بوابة التطبيق خوارزمية round-robin لتوجيه الطلبات بين خوادم سليمة. هذا التحميل يوازن الطلبات على الخوادم.

بعد أن تحدد بوابة التطبيق الخادم الخلفية، فإنه يفتح جلسة عمل TCP جديدة مع خادم الخلفية استنادا إلى إعدادات HTTP. تحدد إعدادات HTTP البروتوكول والمنفذ والإعدادات الأخرى المتعلقة بالتوجيه المطلوبة لإنشاء جلسة جديدة مع الخادم الخلفي.

المنفذ والبروتوكول المستخدم في إعدادات HTTP تحديد ما إذا كان يتم تشفير نسبة استخدام الشبكة بين بوابة التطبيق وخوادم الخلفية (وبالتالي إنجاز TLS نهاية إلى نهاية) أو غير مشفرة.

عندما ترسل بوابة تطبيق الطلب الأصلي إلى خادم الخلفية، فإنه يكرم أي تكوين مخصص في إعدادات HTTP المتعلقة تجاوز اسم المضيف والمسار والبروتوكول. يحافظ هذا الإجراء على تقارب الجلسة المستندة إلى ملفات تعريف الارتباط، واستنزاف الاتصال، واختيار اسم المضيف من الواجهة الخلفية، وما إلى ذلك.

إشعار

إذا كان تجمع الواجهة الخلفية:

  • هو نقطة نهاية عامة، يستخدم بوابة التطبيق IP العامة الأمامية الخاصة به للوصول إلى الخادم. في حالة لم يكن هناك عنوان IP عام أمامي، يتم تعيين عنوان اتصال خارجي صادر.
  • يحتوي على FQDN قابل للحل داخليا أو عنوان IP خاص، توجيه بوابة التطبيق الطلب إلى خادم الخلفية باستخدام مثيل عناوين IP الخاصة به.
  • يحتوي على نقطة نهاية خارجية أو FQDN قابل للحل خارجيا، توجيه بوابة التطبيق الطلب إلى خادم الخلفية باستخدام عنوان IP العمومية الواجهة الأمامية الخاصة به. إذا كانت الشبكة الفرعية تحتوي على نقاط نهاية الخدمة، فستوجه بوابة التطبيق الطلب إلى الخدمة عبر عنوان IP الخاص بها. تستند دقة DNS إلى منطقة DNS خاصة أو خادم DNS مخصص، إذا تم تكوينه، أو يستخدم DNS الافتراضي الذي يوفره Azure. في حالة لم يكن هناك عنوان IP عام أمامي، يتم تعيين عنوان اتصال خارجي صادر.

دقة DNS للخادم الخلفي

عند تكوين خادم تجمع الواجهة الخلفية باستخدام اسم مجال مؤهل بالكامل (FQDN)، تقوم بوابة التطبيق بإجراء بحث DNS للحصول على عنوان (عناوين) IP لاسم المجال. يتم تخزين قيمة IP في ذاكرة التخزين المؤقت لبوابة التطبيق لتمكينها من الوصول إلى الأهداف بشكل أسرع عند تقديم الطلبات الواردة.

تحتفظ بوابة التطبيق بهذه المعلومات المخزنة مؤقتا للفترة المكافئة ل TTL لسجل DNS هذا (وقت البقاء) وتنفذ بحث DNS جديدا بمجرد انتهاء صلاحية TTL. إذا اكتشفت بوابة تغييرا في عنوان IP لاستعلام DNS اللاحق الخاص بها، فستبدأ في توجيه حركة المرور إلى هذه الوجهة المحدثة. في حالة حدوث مشاكل مثل فشل بحث DNS في تلقي استجابة أو لم يعد السجل موجودا، تستمر البوابة في استخدام آخر عنوان (عناوين) IP معروف جيدا. وهذا يضمن الحد الأدنى من التأثير على مسار البيانات.

هام

  • عند استخدام خوادم DNS المخصصة مع الشبكة الظاهرية لبوابة التطبيق، من المهم أن تستجيب جميع الخوادم باستمرار بنفس قيم DNS. عندما يصدر مثيل Application Gateway استعلام DNS، فإنه يستخدم القيمة من الخادم الذي يستجيب أولا.
  • يجب على مستخدمي خوادم DNS المخصصة المحلية ضمان الاتصال ب Azure DNS من خلال محلل Azure DNS الخاص (مستحسن) أو جهاز ظاهري لمحول DNS عند استخدام منطقة DNS خاصة لنقطة النهاية الخاصة.

تعديل الطلب

تقوم بوابة التطبيق بإدراج ستة عناوين إضافية لجميع الطلبات قبل إعادة توجيه الطلبات إلى الخلفية. هذه الرؤوس هي x-forwarded-for، x-forwarded-port، x-forwarded-proto، x-original-host، x-original-url، وx-appgw-trace-id. تنسيق x-forwarded-for header هو قائمة مفصولة بفواصل من IP:port.

القيم الصالحة لـx-forwarded-proto هي HTTP أو HTTPS. تحدد X-forwarded-port المنفذ الذي وصل فيه الطلب إلى بوابة التطبيق. يحتوي عنوان X-original-host على عنوان المضيف الأصلي الذي وصل به الطلب. هذا العنوان مفيد في تكامل موقع Azure، حيث يتم تعديل عنوان المضيف الوارد قبل توجيه نسبة استخدام الشبكة إلى الواجهة الخلفية. إذا تم تمكين تقارب جلسة العمل كخيار، ثم يضيف ملف تعريف ارتباط تقارب مدارة البوابة.

X-appgw-trace-id هو معرف فريد تم إنشاؤه بواسطة بوابة التطبيق لكل طلب عميل ويتم تقديمه في الطلب الذي تمت إعادة توجيهه إلى عضو تجمع الخلفية. يتكون المعرف الفريد العمومي من 32 حرفا أبجديا رقميا معروضا بدون شرط (على سبيل المثال: ac882cd65a2712a0fe1289ec2bb6aee7). يمكن استخدام هذا المعرف الفريد العمومي لربط طلب تم تلقيه بواسطة بوابة التطبيق وبدءه إلى عضو تجمع الخلفية عبر خاصية transactionId في سجلات التشخيص.

يمكنك تكوين بوابة التطبيق لتعديل عناوين الطلب والاستجابة وعنوان URL باستخدام إعادة كتابة عناوين HTTP وعنوان URL أو لتعديل مسار URI باستخدام إعداد تجاوز المسار. ومع ذلك، ما لم يتم تكوين للقيام بذلك، يتم توزيع كافة الطلبات الواردة إلى الخلفية.

الخطوات التالية