Membuat gateway aplikasi dengan pengalihan HTTP ke HTTPS menggunakan Azure CLI

Anda dapat menggunakan Azure CLI untuk membuat gateway aplikasi dengan sertifikat untuk penghentian TLS/SSL. Aturan perutean digunakan untuk mengalihkan lalu lintas HTTP di gateway aplikasi Anda ke port HTTPS. Dalam contoh ini, Anda juga membuat Virtual Machine Scale Set untuk kumpulan backend gateway aplikasi yang berisi dua instans komputer virtual.

Dalam artikel ini, Anda akan mempelajari cara:

  • Membuat sertifikat yang ditandatangani sendiri
  • Menyiapkan jaringan
  • Membuat gateway aplikasi dengan sertifikat
  • Menambahkan pendengar dan aturan pengalihan
  • Membuat Set Skala Komputer Virtual dengan kumpulan backend default

Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.

Prasyarat

  • Tutorial ini memerlukan Azure CLI versi 2.0.4 atau yang lebih baru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terpasang.

Membuat sertifikat yang ditandatangani sendiri

Untuk penggunaan produksi, Anda harus mengimpor sertifikat valid yang ditandatangani oleh penyedia tepercaya. Untuk tutorial ini, Anda membuat sertifikat yang ditandatangani sendiri dan file pfx menggunakan perintah openssl.

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out appgwcert.crt

Masukkan nilai yang masuk akal untuk sertifikat Anda. Anda dapat menerima nilai default.

openssl pkcs12 -export -out appgwcert.pfx -inkey privateKey.key -in appgwcert.crt

Masukkan kata sandi untuk sertifikat. Dalam contoh ini, Azure123456! sedang digunakan.

Membuat grup sumber daya

Grup sumber daya adalah wadah logis di mana sumber daya Azure ditempatkan dan dikelola. Membuat grup sumber daya dengan menggunakan az group create.

Contoh berikut membuat grup sumber daya bernama myResourceGroupAG di lokasi eastus.

az group create --name myResourceGroupAG --location eastus

Membuat sumber daya jaringan

Buat jaringan virtual bernama myVNet dan subnet bernama myAGSubnet menggunakan az network vnet create. Anda kemudian dapat menambahkan subnet bernama myBackendSubnet yang diperlukan oleh server backend menggunakan az network vnet subnet create. Buat alamat IP publik bernama myAGPublicIPAddress menggunakan buat ip-publik jaringan az.

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

Buat gerbang aplikasi

Anda dapat menggunakan az network application-gateway create untuk membuat gateway aplikasi yang bernama myAppGateway. Saat Anda membuat gateway aplikasi menggunakan Azure CLI, Anda menentukan informasi konfigurasi, seperti pengaturan kapasitas, sku, dan HTTP.

Gateway aplikasi ditetapkan ke myAGSubnet dan myPublicIPAddress yang Anda buat sebelumnya. Dalam contoh ini, Anda mengaitkan sertifikat yang Anda buat dan kata sandinya saat membuat gateway aplikasi.

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --subnet myAGsubnet \
  --capacity 2 \
  --sku Standard_Medium \
  --http-settings-cookie-based-affinity Disabled \
  --frontend-port 443 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --public-ip-address myAGPublicIPAddress \
  --cert-file appgwcert.pfx \
  --cert-password "Azure123456!"

Mungkin perlu waktu beberapa menit untuk membuat gateway aplikasi. Setelah gateway aplikasi dibuat, Anda bisa melihat fitur baru ini:

  • appGatewayBackendPool - Gateway aplikasi harus memiliki setidaknya satu kumpulan alamat backend.
  • appGatewayBackendHttpSettings - Menentukan bahwa port 80 dan protokol HTTP digunakan untuk komunikasi.
  • appGatewayHttpListener - Listener default yang dikaitkan dengan appGatewayBackendPool.
  • appGatewayFrontendIP: Menetapkan myAGPublicIPAddress ke appGatewayHttpListener.
  • aturan1 - Aturan pengalihan bawaan yang terhubung dengan appGatewayHttpListener.

Menambahkan pendengar dan aturan pengalihan

Menambahkan port HTTP

Anda dapat menggunakan az network application-gateway frontend-port create untuk menambahkan port HTTP ke gateway aplikasi.

az network application-gateway frontend-port create \
  --port 80 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name httpPort

Menambahkan listener HTTP

Anda dapat menggunakan az network application-gateway http-listener create untuk menambahkan listener bernama myListener ke gateway aplikasi.

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

Menambahkan konfigurasi pengalihan

Tambahkan konfigurasi pengalihan HTTP ke HTTPS ke gateway aplikasi menggunakan az network application-gateway redirect-config create.

az network application-gateway redirect-config create \
  --name httpToHttps \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --type Permanent \
  --target-listener appGatewayHttpListener \
  --include-path true \
  --include-query-string true

Tambahkan aturan perutean

Tambahkan aturan rute bernama rule2 dengan konfigurasi pengalihan ke gateway aplikasi menggunakan az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name rule2 \
  --resource-group myResourceGroupAG \
  --http-listener myListener \
  --rule-type Basic \
  --redirect-config httpToHttps

Buat Set Skala Mesin Virtual

Dalam contoh ini, Anda membuat Set Skala Komputer Virtual bernama myvmss yang menyediakan server untuk kumpulan backend di gateway aplikasi. Komputer virtual dalam kelompok skala dikaitkan dengan myBackendSubnet dan appGatewayBackendPool. Untuk membuat set skala, gunakan az vmss create.

az vmss create \
  --name myvmss \
  --resource-group myResourceGroupAG \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --admin-password Azure123456! \
  --instance-count 2 \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --vm-sku Standard_DS2 \
  --upgrade-policy-mode Automatic \
  --app-gateway myAppGateway \
  --backend-pool-name appGatewayBackendPool

Memasang NGINX

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

Uji gateway aplikasi

Untuk mendapatkan alamat IP publik gateway aplikasi, Anda dapat menggunakan az network public-ip show. Salin alamat IP publik, lalu tempelkan ke bilah alamat browser Anda.

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

Peringatan aman

Untuk menerima peringatan keamanan jika Anda menggunakan sertifikat yang ditandatangani sendiri, pilih Detail lalu Lanjutkan ke halaman web. Situs NGINX aman Anda kemudian ditampilkan seperti dalam contoh berikut:

Menguji URL dasar di gateway aplikasi

Langkah selanjutnya