إنشاء بوابة تطبيق مع إعادة توجيه 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 الآمن الخاص بك كما في المثال التالي: