إنشاء بوابة تطبيق مع إعادة توجيه HTTP إلى HTTPS باستخدام Azure PowerShell

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

في هذه المقالة، ستتعرف على كيفية:

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

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

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

يتطلب هذا البرنامج التعليمي توفر الوحدة النمطية Azure PowerShell إصدار 1.0.0 أو أحدث. قم بتشغيل Get-Module -ListAvailable Az للعثور على الإصدار. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. لتشغيل الأوامر في هذا البرنامج التعليمي، تحتاج أيضًا إلى تشغيله Login-AzAccount لإنشاء اتصال مع Azure.

إنشاء شهادة موقَّعة ذاتيًا

لأغراض استخدام الإنتاج، يجب عليك استيراد شهادة صالحة مُوقَّعة من قِبَل موفّر موثوق به. يمكنك أن تنشئ لهذا البرنامج التعليمي شهادة موقعة ذاتيًّا باستخدام New-SelfSignedCertificate. يمكنك استخدمExport-PfxCertificateمع بصمة الإبهام التي تم إرجاعها لتصدير ملف pfx من الشهادة.

New-SelfSignedCertificate `
  -certstorelocation cert:\localmachine\my `
  -dnsname www.contoso.com

لا بد أن ترى شيئاً مماثلاً لتلك النتيجة:

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my

Thumbprint                                Subject
----------                                -------
E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630  CN=www.contoso.com

قم باستخدام بصمة الإبهام لإنشاء ملف pfx:

$pwd = ConvertTo-SecureString -String "Azure123456!" -Force -AsPlainText
Export-PfxCertificate `
  -cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
  -FilePath c:\appgwcert.pfx `
  -Password $pwd

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

وتُعد مجموعة الموارد عبارة عن حاوية منطقية يتم فيها توزيع موارد Azure وإدارتها. أنشئ مجموعة موارد Azure التي تُسمى myResourceGroupAG باستخدام New-AzResourceGroup.

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

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

إنشاء تكوينات الشبكة الفرعية لـ myBackendSubnet وmyAGSubnet باستخدام New-AzVirtualNetworkSubnetConfig. إنشاء شبكة الاتصال الظاهرية myVNet باستخدام New-AzVirtualNetwork من خلال تكوينات الشبكة الفرعية. أنشئ عنوان IP عاماً باسم myPublicIPAddress باستخدام New-AzPublicIpAddress: تُستخدم هذه الموارد لتوفير اتصال الشبكة ببوابة التطبيق والموارد المرتبطة بها.

$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -AddressPrefix 10.0.1.0/24
$agSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myAGSubnet `
  -AddressPrefix 10.0.2.0/24
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myVNet `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $backendSubnetConfig, $agSubnetConfig
$pip = New-AzPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myAGPublicIPAddress `
  -AllocationMethod Dynamic

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

إنشاء تكوينات IP ومنفذ الواجهة الأمامية

قم بربط myAGSubnet الذي قمت بإنشائه مسبقا ببوابة التطبيق باستخدام New-AzApplicationGatewayIPConfiguration. قم بتعيين myAGPublicIPAddress إلى بوابة التطبيق باستخدام New-AzApplicationGatewayFrontendIPConfig. وبعد ذلك يمكنك إنشاء منفذ HTTPS باستخدام New-AzApplicationGatewayFrontendPort.

$vnet = Get-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet
$subnet=$vnet.Subnets[0]
$gipconfig = New-AzApplicationGatewayIPConfiguration `
  -Name myAGIPConfig `
  -Subnet $subnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -PublicIPAddress $pip
$frontendPort = New-AzApplicationGatewayFrontendPort `
  -Name myFrontendPort `
  -Port 443

إنشاء مجموعة الواجهة الخلفية والإعدادات

أنشئ المجموعة الخلفية الافتراضية باسم appGatewayBackendPool لبوابة التطبيق باستخدام New-AzApplicationGatewayBackendAddressPool. قم تكوين إعدادات مجموعة الواجهة الخلفية باستخدام New-AzApplicationGatewayBackendHttpSettings.

$defaultPool = New-AzApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool 
$poolSettings = New-AzApplicationGatewayBackendHttpSettings `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 120

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

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

إنشاء كائن شهادة باستخدام New-AzApplicationGatewaySlCertificate ثم قم بإنشاء وحدة إصغاء باسم appGatewayHttpListener باستخدام جديد-AzApplicationGatewayHttpListener مع تكوين الواجهة الأمامية، منفذ الواجهة الأمامية، والشهادة التي قمت بإنشائها مسبقًا. يلزم وجود قاعدة لوحدة الاستماع لمعرفة أي مجموعة واجهة خلفية يستخدم لنسبة استخدام الشبكة الواردة. قم بإنشاء قاعدة أساسية تسمى rule1 باستخدام New-AzApplicationGatewayRequestRoutingRule.

$pwd = ConvertTo-SecureString `
  -String "Azure123456!" `
  -Force `
  -AsPlainText
$cert = New-AzApplicationGatewaySslCertificate `
  -Name "appgwcert" `
  -CertificateFile "c:\appgwcert.pfx" `
  -Password $pwd
$defaultListener = New-AzApplicationGatewayHttpListener `
  -Name appGatewayHttpListener `
  -Protocol Https `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendPort `
  -SslCertificate $cert
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
  -Name rule1 `
  -RuleType Basic `
  -HttpListener $defaultListener `
  -BackendAddressPool $defaultPool `
  -BackendHttpSettings $poolSettings

أنشئ بوابة التطبيق

الآن وبعد إنشاء الموارد الداعمة الضرورية، حدّد معلمات لبوابة التطبيق المسماة myAppGateway باستخدام New-AzApplicationGatewaySku، ثم قم بإنشائها باستخدام New-AzApplicationGateway مع الشهادة.

$sku = New-AzApplicationGatewaySku `
  -Name Standard_Medium `
  -Tier Standard `
  -Capacity 2
$appgw = New-AzApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -BackendAddressPools $defaultPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendPort `
  -HttpListeners $defaultListener `
  -RequestRoutingRules $frontendRule `
  -Sku $sku `
  -SslCertificates $cert

إضافة وحدة استماع وقاعدة إعادة توجيه

إضافة منفذ HTTP

أضف منفذ HTTP إلى بوابة التطبيق باستخدام Add-AzApplicationGatewayFrontendPort.

$appgw = Get-AzApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG
Add-AzApplicationGatewayFrontendPort `
  -Name httpPort  `
  -Port 80 `
  -ApplicationGateway $appgw

إضافة وحدة الاستماع HTTP

أضف وحدة الاستماع HTTP التي تُسمى myListener إلى بوابة التطبيق باستخدام Add-AzApplicationGatewayHttpListener.

$fipconfig = Get-AzApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -ApplicationGateway $appgw
$fp = Get-AzApplicationGatewayFrontendPort `
  -Name httpPort `
  -ApplicationGateway $appgw
Add-AzApplicationGatewayHttpListener `
  -Name myListener `
  -Protocol Http `
  -FrontendPort $fp `
  -FrontendIPConfiguration $fipconfig `
  -ApplicationGateway $appgw

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

أضف HTTP إلى تكوين إعادة توجيه HTTPS إلى بوابة التطبيق باستخدام Add-AzApplicationGatewayRedirectConfiguration.

$defaultListener = Get-AzApplicationGatewayHttpListener `
  -Name appGatewayHttpListener `
  -ApplicationGateway $appgw
Add-AzApplicationGatewayRedirectConfiguration -Name httpToHttps `
  -RedirectType Permanent `
  -TargetListener $defaultListener `
  -IncludePath $true `
  -IncludeQueryString $true `
  -ApplicationGateway $appgw

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

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

$myListener = Get-AzApplicationGatewayHttpListener `
  -Name myListener `
  -ApplicationGateway $appgw
$redirectConfig = Get-AzApplicationGatewayRedirectConfiguration `
  -Name httpToHttps `
  -ApplicationGateway $appgw
Add-AzApplicationGatewayRequestRoutingRule `
  -Name rule2 `
  -RuleType Basic `
  -HttpListener $myListener `
  -RedirectConfiguration $redirectConfig `
  -ApplicationGateway $appgw
Set-AzApplicationGateway -ApplicationGateway $appgw

إنشاء مجموعة تحجيم الجهاز الظاهري

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

$vnet = Get-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet
$appgw = Get-AzApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway
$backendPool = Get-AzApplicationGatewayBackendAddressPool `
  -Name appGatewayBackendPool `
  -ApplicationGateway $appgw
$ipConfig = New-AzVmssIpConfig `
  -Name myVmssIPConfig `
  -SubnetId $vnet.Subnets[1].Id `
  -ApplicationGatewayBackendAddressPoolsId $backendPool.Id
$vmssConfig = New-AzVmssConfig `
  -Location eastus `
  -SkuCapacity 2 `
  -SkuName Standard_DS2 `
  -UpgradePolicyMode Automatic
Set-AzVmssStorageProfile $vmssConfig `
  -ImageReferencePublisher MicrosoftWindowsServer `
  -ImageReferenceOffer WindowsServer `
  -ImageReferenceSku 2016-Datacenter `
  -ImageReferenceVersion latest `
  -OsDiskCreateOption FromImage
Set-AzVmssOsProfile $vmssConfig `
  -AdminUsername azureuser `
  -AdminPassword "Azure123456!" `
  -ComputerNamePrefix myvmss
Add-AzVmssNetworkInterfaceConfiguration `
  -VirtualMachineScaleSet $vmssConfig `
  -Name myVmssNetConfig `
  -Primary $true `
  -IPConfiguration $ipConfig
New-AzVmss `
  -ResourceGroupName myResourceGroupAG `
  -Name myvmss `
  -VirtualMachineScaleSet $vmssConfig

تثبيت IIS

$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/appgatewayurl.ps1"); 
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }
$vmss = Get-AzVmss -ResourceGroupName myResourceGroupAG -VMScaleSetName myvmss
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
  -Name "customScript" `
  -Publisher "Microsoft.Compute" `
  -Type "CustomScriptExtension" `
  -TypeHandlerVersion 1.8 `
  -Setting $publicSettings
Update-AzVmss `
  -ResourceGroupName myResourceGroupAG `
  -Name myvmss `
  -VirtualMachineScaleSet $vmss

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

يمكنك استخدام Get-AzPublicIPAddress للحصول على عنوان IP العام لبوابة التطبيق. نسخ عنوان IP العام، ثم ألصقه في شريط العنوان في متصفحك. على سبيل المثال، http://52.170.203.149

Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

تحذير آمن

لقبول تحذير الأمان إذا استخدمت شهادة موقعة ذاتياً، حدد "Details"، ومن ثمَّ "Go on to the webpage": ثم يتم عرض موقع IIS الآمن الخاص بك كما في المثال التالي:

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

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