Azure CLI を使用して HTTP から HTTPS へのリダイレクトと共にアプリケーション ゲートウェイを作成する

Azure CLI で TLS または SSL 終端の証明書を使用してアプリケーション ゲートウェイを作成できます。 アプリケーション ゲートウェイで HTTP トラフィックを HTTPS ポートにリダイレクトするために、ルーティング規則が使用されます。 また、この例では、2 つの仮想マシン インスタンスが含まれるアプリケーション ゲートウェイのバックエンド プールのために仮想マシン スケール セットを作成します。

この記事では、次のことについて説明します。

  • 自己署名証明書の作成
  • ネットワークの設定
  • 証明書でのアプリケーション ゲートウェイの作成
  • リスナーとリダイレクト規則の追加
  • 既定のバックエンド プールで仮想マシン スケール セットを作成する

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • このチュートリアルには、Azure CLI のバージョン 2.0.4 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

自己署名証明書の作成

実際の運用では、信頼できるプロバイダーによって署名された有効な証明書をインポートする必要があります。 このチュートリアルでは、openssl コマンドを使用して、自己署名証明書と pfx ファイルを作成します。

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

証明書に対して意味のある値を入力します。 既定値をそのまま使用することもできます。

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

証明書のパスワードを入力します。 この例では、Azure123456! が使用されています。

リソース グループを作成する

リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 az group create を使用してリソース グループを作成します。

次の例では、myResourceGroupAG という名前のリソース グループを eastus に作成します。

az group create --name myResourceGroupAG --location eastus

ネットワーク リソースを作成する

az network vnet create を使用して、myVNet という名前の仮想ネットワークと myAGSubnet という名前のサブネットを作成します。 次に、az network vnet subnet create を使用して、バックエンド サーバーに必要な myBackendSubnet という名前のサブネットを追加できます。 az network public-ip create を使用して myAGPublicIPAddress という名前のパブリック IP アドレスを作成します。

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

アプリケーション ゲートウェイの作成

az network application-gateway create を使用して、myAppGateway という名前のアプリケーション ゲートウェイを作成することができます。 Azure CLI を使用してアプリケーション ゲートウェイを作成するときは、容量、SKU、HTTP 設定などの構成情報を指定します。

このアプリケーション ゲートウェイを、先ほど作成した myAGSubnetmyAGPublicIPAddress に割り当てます。 この例では、アプリケーション ゲートウェイを作成するときに、作成した証明書とそのパスワードを関連付けます。

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!"

アプリケーション ゲートウェイの作成には数分かかる場合があります。 アプリケーション ゲートウェイを作成すると、新たに次の機能が確認できます。

  • appGatewayBackendPool - アプリケーション ゲートウェイには、少なくとも 1 つのバックエンド アドレス プールが必要です。
  • appGatewayBackendHttpSettings - 通信に使用するポート 80 と HTTP プロトコルを指定します。
  • appGatewayHttpListener - appGatewayBackendPool に関連付けられている既定のリスナー。
  • appGatewayFrontendIP -myAGPublicIPAddressappGatewayHttpListener に割り当てます。
  • rule1 - appGatewayHttpListener に関連付けられている既定のルーティング規則。

リスナーとリダイレクト規則の追加

HTTP ポートの追加

az network application-gateway frontend-port create を使用して、HTTP ポートをアプリケーション ゲートウェイに追加できます。

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

HTTP リスナーの追加

az network application-gateway http-listener create を使用して、myListener という名前のリスナーをアプリケーション ゲートウェイに追加できます。

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

リダイレクト構成の追加

az network application-gateway redirect-config create を使用して、HTTP から HTTPS へのリダイレクト構成をアプリケーション ゲートウェイに追加します。

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

ルーティング規則の追加

az network application-gateway rule create を使用して、rule2 という名前のルーティング規則をリダイレクト構成と共にアプリケーション ゲートウェイに追加します。

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

仮想マシン スケール セットの作成

この例では、アプリケーション ゲートウェイのバックエンド プールにサーバーを提供する、myvmss という名前の仮想マシン スケール セットを作成します。 スケール セット内の仮想マシンは、myBackendSubnetappGatewayBackendPool に関連付けられています。 スケール セットを作成するには、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

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" }'

アプリケーション ゲートウェイをテストする

アプリケーション ゲートウェイのパブリック IP アドレスを取得するには、az network public-ip show を使用できます。 そのパブリック IP アドレスをコピーし、ブラウザーのアドレス バーに貼り付けます。

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

Secure warning

自己署名証明書を使用した場合、セキュリティ警告を受け入れるには、そのまま [詳細] を選択し [Web ページへ移動] を選択します。 セキュリティで保護された NGINX サイトは、次の例のように表示されます。

Test base URL in application gateway

次のステップ