0Pricing
AWS Solutions Architect · درس

قواعد المستمع والتوجيه المستند إلى المسار

اكتبوا قواعد المستمع على ALB لتوجيه الطلبات إلى مجموعات أهداف مختلفة استنادًا إلى ترويسات المضيف أو أنماط المسار أو سلاسل الاستعلام.

قواعد المستمع والتوجيه المستند إلى المسار درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

شرح مستمعي ALB

إن المستمع في ALB هو عملية تتحقق من طلبات الاتصال باستخدام بروتوكول ومنفذ تحددونهما (مثل HTTP على المنفذ 80 أو HTTPS على المنفذ 443). يحتوي كل مستمع على قواعد واحدة أو أكثر تحدد مكان توجيه الطلبات استنادًا إلى محتواها.

يجب أن يحتوي المستمع على قاعدة افتراضية (الإجراء الشامل عند عدم تطابق أي قاعدة أخرى)، ويمكن أن يحتوي على ما يصل إلى 100 قاعدة إضافية. تُقيَّم القواعد وفق ترتيب الأولوية (الرقم الأقل = الأولوية الأعلى). عند تطابق طلب مع شرط إحدى القواعد، يُطبَّق الإجراء المقابل ولا تُقيَّم القواعد التالية.

# Create an HTTP listener on port 80
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789:loadbalancer/app/my-alb/abc123 \
  --protocol HTTP \
  --port 80 \
  --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/default-tg/def456

شروط القواعد

تطابق قواعد المستمع الطلبات استنادًا إلى الشروط. يمكنكم دمج شروط متعددة في قاعدة واحدة (ويجب أن تتطابق جميع الشروط حتى تُطبَّق القاعدة). أنواع الشروط المتاحة:

  • host-header: يطابق ترويسة HTTP المسماة Host (مثل api.example.com)
  • path-pattern: يطابق مسار URL (مثل /api/* و/images/*.jpg)
  • http-header: يطابق اسم أي ترويسة HTTP ونمط قيمتها
  • http-request-method: يطابق أساليب HTTP (GET وPOST وDELETE وغيرها)
  • query-string: يطابق أزواج المفتاح والقيمة في سلسلة الاستعلام
  • source-ip: يطابق نطاقات CIDR لعناوين IP الخاصة بالعملاء

التوجيه القائم على المسار

يوجّه التوجيه القائم على المسار الطلبات إلى مجموعات أهداف مختلفة استنادًا إلى مسار URL. وهذا هو نمط التوجيه الأكثر شيوعًا للخدمات المصغرة الموجودة خلف ALB واحد. مثال على قواعد في ALB واحد:

  • المسار هو /api/* → مجموعة الأهداف: api-service
  • المسار هو /images/* → مجموعة الأهداف: image-processor
  • المسار هو /admin/* → مجموعة الأهداف: admin-app
  • الافتراضي → مجموعة الأهداف: frontend-app

يتيح ذلك لـ ALB واحد تقديم خدمات متعددة ومستقلة دون الحاجة إلى موازنات تحميل متعددة، مما يقلل التكلفة وتعقيد DNS.

# Create a path-based routing rule
aws elbv2 create-rule \
  --listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
  --priority 10 \
  --conditions Field=path-pattern,Values='/api/*' \
  --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/api-service/xyz789

التوجيه القائم على المضيف

يوجّه التوجيه القائم على المضيف الطلبات استنادًا إلى ترويسة HTTP المسماة Host، مما يتيح تقديم أسماء نطاقات متعددة (مضيفات افتراضية) من خلال ALB واحد. مثال:

  • المضيف هو api.example.com → مجموعة أهداف api-service
  • المضيف هو admin.example.com → مجموعة أهداف admin-app
  • المضيف هو www.example.com → مجموعة أهداف frontend

يحتوي كل اسم نطاق على سجل CNAME أو ALIAS يشير إلى اسم DNS نفسه الخاص بـ ALB، ولكن ALB يوجّه كل طلب إلى الواجهة الخلفية المناسبة استنادًا إلى ترويسة المضيف. يُعد التوجيه القائم على المضيف مثاليًا لبرامج SaaS متعددة المستأجرين أو للتطبيقات أحادية البنية التي يجري تقسيمها إلى خدمات مصغرة.

# Create a host-based routing rule
aws elbv2 create-rule \
  --listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
  --priority 5 \
  --conditions '[{"Field":"host-header","HostHeaderConfig":{"Values":["api.example.com"]}}]' \
  --actions '[{"Type":"forward","TargetGroupArn":"arn:aws:elasticloadbalancing:us-east-1:123456789:targetgroup/api-service/xyz789"}]'

إجراءات القواعد

عند تطابق شروط إحدى القواعد، ينفذ ALB أحد الإجراءات التالية:

  • forward: يوجّه الطلب إلى مجموعة أهداف واحدة أو أكثر (مع أوزان اختيارية)
  • redirect: يعيد توجيه HTTP (301 أو 302) إلى عنوان URL جديد؛ وهو مفيد لإعادة التوجيه من HTTP إلى HTTPS
  • fixed-response: يعيد استجابة HTTP ثابتة برمز حالة ونوع محتوى ونص محددة؛ وهو مفيد لصفحات الصيانة أو استجابات فحص الصحة البسيطة
  • authenticate-cognito: يصادق على المستخدمين عبر Cognito User Pool قبل التوجيه
  • authenticate-oidc: يصادق على المستخدمين عبر أي موفر هوية متوافق مع OIDC
# Create a redirect rule: HTTP to HTTPS
aws elbv2 create-rule \
  --listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/http80 \
  --priority 1 \
  --conditions '[{"Field":"path-pattern","PathPatternConfig":{"Values":["/*"]}}]' \
  --actions '[{"Type":"redirect","RedirectConfig":{"Protocol":"HTTPS","Port":"443","StatusCode":"HTTP_301"}}]'

نمط إعادة التوجيه من HTTP إلى HTTPS

يتمثل نمط قاعدة المستمع الأكثر شيوعًا في إعادة توجيه HTTP إلى HTTPS:

  1. أنشئوا مستمع HTTP على المنفذ 80 بقاعدة واحدة: إعادة توجيه كل حركة المرور (/*) إلى HTTPS باستخدام رمز الحالة 301
  2. أنشئوا مستمع HTTPS على المنفذ 443 مع قواعد التوجيه الفعلية التي تشير إلى مجموعات الأهداف

يضمن ذلك إعادة توجيه المستخدمين الذين يكتبون http:// أو يتبعون روابط HTTP قديمة إلى HTTPS بشفافية، دون إجراء أي تغييرات على مستوى التطبيق. تتم معالجة إعادة التوجيه بالكامل في طبقة موازن التحميل.

إجراء الاستجابة الثابتة

يعيد إجراء الاستجابة الثابتة استجابة HTTP ثابتة من ALB دون توجيه الطلب إلى أي هدف. استخدموه من أجل:

  • إعادة صفحة صيانة بحالة 503 لمسارات محددة أثناء الصيانة
  • توفير نقطة نهاية خفيفة لفحص الصحة مباشرة من ALB (تعيد 200 OK فورًا دون تحميل زائد على الواجهة الخلفية)
  • حظر مسارات محددة باستجابة 403 Forbidden

تفيد الاستجابات الثابتة في إخراج مسارات من الخدمة مؤقتًا دون تعديل تعليمة التطبيق البرمجية أو إعادة نشره، وذلك عبر ضبط قواعد المستمع ديناميكيًا.

# Return 503 maintenance page for a specific path
aws elbv2 create-rule \
  --listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
  --priority 20 \
  --conditions '[{"Field":"path-pattern","PathPatternConfig":{"Values":["/checkout/*"]}}]' \
  --actions '[{"Type":"fixed-response","FixedResponseConfig":{"StatusCode":"503","ContentType":"text/html","MessageBody":"<h1>Maintenance</h1>"}}]'

مصادقة ALB باستخدام Cognito

يتكامل إجراء authenticate-cognito في ALB مع Amazon Cognito User Pools لمعالجة مصادقة المستخدمين قبل توجيه الطلبات إلى تطبيقكم. عندما يصل مستخدم غير مصادق عليه إلى قاعدة مستمع محمية، يعيد ALB توجيهه إلى واجهة المستخدم المستضافة من Cognito لتسجيل الدخول. بعد نجاح المصادقة، يعيّن ALB ملف تعريف ارتباط مشفرًا ويوجه الطلب مع ترويسات هوية المستخدم.

ينقل ذلك منطق المصادقة بالكامل خارج تطبيقكم. وتتلقى الواجهة الخلفية الترويسات X-Amzn-Oidc-Identity وX-Amzn-Oidc-Data وX-Amzn-Oidc-Access-Token التي تحتوي على مطالبات المستخدم المصادق عليه.

التوجيه المستند إلى سلسلة الاستعلام والرؤوس

يمكن لقواعد مستمع ALB التوجيه استنادًا إلى معلمات سلسلة الاستعلام ورؤوس HTTP، مما يتيح توجيه الطلبات بدقة عالية:

  • توجيه عملاء الأجهزة المحمولة من خلال اكتشاف الرأس User-Agent: *Mobile* إلى خلفية محسّنة للأجهزة المحمولة
  • توجيه طلبات واجهة برمجة التطبيقات المميزة من خلال التحقق من الرأس المخصص X-API-Tier: premium إلى مجموعة أهداف أسرع
  • توجيه متغيرات اختبار A/B من خلال قراءة معلمة سلسلة الاستعلام ?variant=beta

يتيح لك التوجيه المستند إلى الرؤوس تطبيق علامات الميزات وتقسيم حركة المرور على مستوى البنية التحتية دون تعديل تعليمة برمجية التطبيق.

أولوية القواعد وترتيب التقييم

يتم تقييم القواعد بترتيب الأولوية التصاعدي. ويتم تقييم أرقام الأولوية الأقل أولًا. يُطبَّق إجراء أول قاعدة مطابقة، ولا يتم تقييم أي قواعد أخرى بعدها. لا تملك القاعدة الافتراضية رقم أولوية، ويتم تقييمها دائمًا في النهاية باعتبارها القاعدة الشاملة.

أفضل ممارسة: عيّن أرقام الأولوية بزيادات قدرها 10 (10 و20 و30...) بدلًا من استخدام أعداد صحيحة متتالية. يترك ذلك مجالًا لإدراج قواعد جديدة بين القواعد الحالية دون إعادة ترقيمها. ينبغي أن تملك القواعد الأكثر تحديدًا (مثل المسار + رأس المضيف) أرقامًا أقل (أي أولوية أعلى) من القواعد العامة.

# List rules for a listener (shows priorities)
aws elbv2 describe-rules \
  --listener-arn arn:aws:elasticloadbalancing:us-east-1:123456789:listener/app/my-alb/abc123/lis456 \
  --query 'Rules[*].{Priority:Priority,Conditions:Conditions[0].Field,Actions:Actions[0].Type}' \
  --output table

قواعد المستمع للخدمات المصغرة

يمكن لموازن ALB واحد أن يواجه منصة كاملة من الخدمات المصغرة باستخدام قواعد المستمع. إليك مثالًا واقعيًا يجمع أنواع الشروط الثلاثة:

  • الأولوية 10: Host=api.example.com + Path=/v2/* → مجموعة أهداف api-v2
  • الأولوية 20: Host=api.example.com + Path=/v1/* → مجموعة أهداف api-v1
  • الأولوية 30: Host=auth.example.com → مجموعة أهداف auth-service
  • الأولوية 40: Host=www.example.com + Path=/static/* → إعادة توجيه CloudFront
  • الافتراضي: Host=www.example.com → مجموعة أهداف الواجهة الأمامية

يقلل هذا التصميم التكاليف من خلال الاستغناء عن الحاجة إلى موازنات تحميل منفصلة لكل خدمة.

تحقق سريع

اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلّمت في هذا الدرس أن قواعد المستمع توجّه الطلبات استنادًا إلى المضيف والمسار والرؤوس والأساليب وسلاسل الاستعلام، وأن القواعد تُقيَّم حسب ترتيب الأولوية مع اعتماد أول تطابق، وأن الإجراءات تشمل التمرير وإعادة التوجيه والاستجابة الثابتة والمصادقة باستخدام Cognito. يتيح التوجيه المستند إلى المسار والمضيف لموازن ALB واحد أن يواجه عدة خدمات مصغرة. بعد ذلك، سنستكشف إنهاء SSL والجلسات الثابتة.

الأسئلة الشائعة

هل درس «قواعد المستمع والتوجيه المستند إلى المسار» مجاني؟

نعم — نص درس «قواعد المستمع والتوجيه المستند إلى المسار» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

ماذا ستتعلم في «قواعد المستمع والتوجيه المستند إلى المسار»؟

اكتبوا قواعد المستمع على ALB لتوجيه الطلبات إلى مجموعات أهداف مختلفة استنادًا إلى ترويسات المضيف أو أنماط المسار أو سلاسل الاستعلام. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟

لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «قواعد المستمع والتوجيه المستند إلى المسار»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟

نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ALB مقابل NLB مقابل GLB: متى تستخدمون كلًا منها
  2. مجموعات الأهداف وفحوصات السلامة
  3. قواعد المستمع والتوجيه المستند إلى المسار
  4. إنهاء SSL والجلسات الثابتة
← العودة إلى AWS Solutions Architect