مشاركة عبر


البرنامج التعليمي: إنشاء بوابة تطبيق باستخدام إعادة توجيه قائمة على مسار URL باستخدام Azure CLI

يمكنك استخدام Azure CLI لتكوين URL التوجيه القائم على قواعد مسار عند إنشاء تطبيق بوابة. في هذا البرنامج التعليمي، يمكنك إنشاء حمامات الخلفية باستخدام مجموعات افتراضية على نطاق وآلة. يمكنك بعد ذلك إنشاء قواعد توجيه URL التي تتأكد من قاعدة التحويل لحركة مرور الويب إلى تجمع الخلفية المناسب.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إعداد الشبكة
  • إنشاء بوابة تطبيق
  • أضف المستمعين وقاعدة التحويل
  • إنشاء مجموعات مقياس آلة افتراضية لمجموعات الواجهة الخلفية

يوضح المثال التالي حركة مرور الموقع القادمة من المنفذين 8080 و8081 ويتم توجيهها إلى نفس تجمعات الواجهة الخلفية:

رسم تخطيطي لمثال توجيه عنوان URL لبوابة التطبيق.

إذا كنت تفضل ذلك، يمكنك إكمال هذا البرنامج التعليمي باستخدام Azure PowerShell.

إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

المتطلبات الأساسية

  • يتطلب هذا البرنامج التعليمي الإصدار 2.0.4 أو الأحدث من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.

إنشاء مجموعة موارد

وتُعد مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها. قم بإنشاء مجموعة موارد باستخدام az group create.

في المثال التالي، سيتم إنشاء مجموعة موارد باسم "myResourceGroupAG" في "eastus".

az group create --name myResourceGroupAG --location eastus

إنشاء موارد الشبكة

إنشاء شبكة افتراضية اسمه myVNet والشبكة الفرعية اسمه myAGSubne ⁩ باستخدام من الألف إلى الياء شبكة vnet إنشاء. ثم يمكنك إضافة الشبكة الفرعية اسمه myBackendSubnet ما هو مطلوب من قِبَل خوادم الواجهة الخلفية باستخدام من الألف إلى الياء شبكة vnet الشبكة الفرعية إنشاء. أنشئ عنوان IP العام المسمى myAGPublicIPAddress باستخدام az network public-ip create.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myAGSubnet \
  --subnet-prefix 10.0.1.0/24

az network vnet subnet create \
  --name myBackendSubnet \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --address-prefix 10.0.2.0/24

az network public-ip create \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard

إنشاء بوابة تطبيق

استخدم az network application-gateway create لإنشاء بوابة تطبيق تسمى myAppGateway. عند إنشاء بوابة تطبيق باستخدام Azure CLI، فإنك تحدد معلومات التكوين، مثل إعدادات السعة وsku وHTTP. يتم تعيين بوابة التطبيق لـ myAGSubnet وmyPublicIPAddress الذي قمت بإنشائه سابقا.

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --subnet myAGsubnet \
  --capacity 2 \
  --sku Standard_v2 \
  --http-settings-cookie-based-affinity Disabled \
  --frontend-port 80 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --public-ip-address myAGPublicIPAddress \
  --priority 100

قد يستغرق إنشاء بوابة التطبيق عدة دقائق. بعد إنشاء بوابة التطبيق، يمكنك رؤية هذه الميزات الجديدة:

  • appGatewayBackendPool - يجب أن يكون هناك بوابة التطبيق تجمع عنوان الخلفية واحد على الأقل.
  • appGatewayBackendHttpSettings - يحدد هذا المنفذ 80 وبروتوكول HTTP يستخدم للاتصال.
  • appGatewayHttpListener - المستمع الافتراضية المرتبطة appGatewayBackendPool⁩.
  • appGatewayFrontendIP - المتنازل myAGPublicIPAddress ⁩إلى appGatewayHttpListener.
  • rule1 - قاعدة التحويل توجيه مقترن appGatewayHttpListener.

أضف تجمعات ومنافذ خلفية

يمكنك إضافة تجمعات عناوين الواجهة الخلفية المسماة imagesBackendPool و videoBackendPool إلى بوابة التطبيق باستخدام إنشاء مجموعة عناوين بوابة تطبيقات الشبكة من az. يمكنك إضافة منافذ الواجهة الأمامية للتجمعات باستخدام إنشاء منفذ الواجهة الأمامية لبوابة تطبيقات الشبكة من الألف إلى الياء.

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name imagesBackendPool

az network application-gateway address-pool create \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name videoBackendPool

az network application-gateway frontend-port create \
  --port 8080 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name bport

az network application-gateway frontend-port create \
  --port 8081 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name rport

أضف المستمعين والقواعد

أضف مستمعين

أضف مستمعي الواجهة الخلفية المسماة backendListener و redirectedListener اللازمين لتوجيه حركة المرور باستخدام az network application-بوابة http-listener create.

az network application-gateway http-listener create \
  --name backendListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port bport \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

az network application-gateway http-listener create \
  --name redirectedListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port rport \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

أضف خريطة مسار URL الافتراضية

تتأكد خرائط مسار URL من توجيه عناوين URL المحددة إلى تجمعات محددة في الخلفية. يمكنك إنشاء خرائط مسار عنوان URL باسم imagePathRule وvideoPathRule باستخدام إنشاء خريطة مسار تطبيق الشبكة من az وعنوان URL لبوابة تطبيقات الشبكة من az -إنشاء قاعدة خريطة المسار

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name urlpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --address-pool imagesBackendPool \
  --default-address-pool appGatewayBackendPool \
  --default-http-settings appGatewayBackendHttpSettings \
  --http-settings appGatewayBackendHttpSettings \
  --rule-name imagePathRule

az network application-gateway url-path-map rule create \
  --gateway-name myAppGateway \
  --name videoPathRule \
  --resource-group myResourceGroupAG \
  --path-map-name urlpathmap \
  --paths /video/* \
  --address-pool videoBackendPool

إضافة تكوين إعادة التوجيه

يمكنك تكوين إعادة توجيه للمستمع باستخدام ⁩ من الألف إلى الياء شبكة تطبيق بوابة إعادة التوجيه التكوين خلق ⁩.

az network application-gateway redirect-config create \
  --gateway-name myAppGateway \
  --name redirectConfig \
  --resource-group myResourceGroupAG \
  --type Found \
  --include-path true \
  --include-query-string true \
  --target-listener backendListener

أضف خريطة مسار عنوان URL لإعادة التوجيه

az network application-gateway url-path-map create \
  --gateway-name myAppGateway \
  --name redirectpathmap \
  --paths /images/* \
  --resource-group myResourceGroupAG \
  --redirect-config redirectConfig \
  --rule-name redirectPathRule

أضف قواعد التحويل

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

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name defaultRule \
  --resource-group myResourceGroupAG \
  --http-listener backendListener \
  --rule-type PathBasedRouting \
  --url-path-map urlpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name redirectedRule \
  --resource-group myResourceGroupAG \
  --http-listener redirectedListener \
  --rule-type PathBasedRouting \
  --url-path-map redirectpathmap \
  --address-pool appGatewayBackendPool \
  --priority 100

إنشاء مجموعات مقياس آلة افتراضية

في هذا المثال، تقوم بإنشاء ثلاث مجموعات مقاييس آلة افتراضية تدعم تجمعات الواجهة الخلفية الثلاثة التي قمت بإنشائها. مجموعات الحجم التي تقوم بإنشائها تسمى myvmss1, myvmss2, and myvmss3. تحتوي كل مجموعة مقياس على مثيلين للجهاز الظاهري تقوم بتثبيت NGINX عليهما.

استبدل <azure-user> وكلمة <المرور> باسم مستخدم وكلمة مرور من اختيارك.

for i in `seq 1 3`; do
  if [ $i -eq 1 ]
  then
    poolName="appGatewayBackendPool"
  fi
  if [ $i -eq 2 ]
  then
    poolName="imagesBackendPool"
  fi
  if [ $i -eq 3 ]
  then
    poolName="videoBackendPool"
  fi

  az vmss create \
    --name myvmss$i \
    --resource-group myResourceGroupAG \
    --image Ubuntu2204 \
    --admin-username <azure-user> \
    --admin-password <password> \
    --instance-count 2 \
    --vnet-name myVNet \
    --subnet myBackendSubnet \
    --vm-sku Standard_DS2 \
    --upgrade-policy-mode Automatic \
    --app-gateway myAppGateway \
    --backend-pool-name $poolName
done

قم بتثبيت NGINX

for i in `seq 1 3`; do
  az vmss extension set \
    --publisher Microsoft.Azure.Extensions \
    --version 2.0 \
    --name CustomScript \
    --resource-group myResourceGroupAG \
    --vmss-name myvmss$i \
    --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'

done

اختبار بوابة التطبيق

للحصول على عنوان IP العام لبوابة التطبيق، استخدم عرض الشبكة العامة للشبكة من الألف إلى الياء. نسخ عنوان IP العام، ثم ألصقه في شريط العنوان في متصفحك. مثل، http://40.121.222.19⁩،⁦http://40.121.222.19:8080/images/test.htm ⁩، http://40.121.222.19:8080/video/test.htm⁩، أو http://40.121.222.19:8081/images/test.htm⁩.

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

اختبر عنوان URL الأساسي في مدخل التطبيق

تغيير URL إلى http://<عنوان IP>:8080/صور /test.html، استبدال عنوان IP الخاص بك لـ <عنوان IP>، ويجب أن ترى شيئاً مثل المثال التالي:

اختبار URL للصور في مدخل التطبيق

تغيير URL إلى http://<عنوان IP>:8080//فيديو/ test.html، استبدال عنوان IP الخاص بك لـ ⁦ < ⁩ عنوان IP>⁩، ويجب أن ترى شيئاً مثل المثال التالي:

اختبار عنوان URL للفيديو في بوابة التطبيق

الآن، قم بتغيير عنوان URL إلى http://<ip-address>:8081/images/test.htm، واستبدل عنوان IP الخاص بك بـ <عنوان IP>، وسترى إعادة توجيه حركة المرور مرة أخرى إلى مجموعة الواجهة الخلفية للصور على http://<ip-address>:8080/images.

تنظيف الموارد

عند عدم الحاجة إلى ذلك، قم بإزالة مجموعة الموارد، وبوابة التطبيق، وجميع الموارد ذات الصلة.

az group delete --name myResourceGroupAG

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