다음을 통해 공유


Azure CLI를 사용하여 내부 리디렉션으로 애플리케이션 게이트웨이 만들기

Azure CLI를 사용하여 애플리케이션 게이트웨이를 만들 때 웹 트래픽 리디렉션을 구성할 수 있습니다. 이 자습서에서는 가상 머신 확장 집합을 사용하여 백 엔드 풀을 정의합니다. 그런 다음, 웹 트래픽이 적절한 풀에 도착하도록 소유한 도메인을 기준으로 수신기와 규칙을 구성합니다. 이 자습서에서는 여러 도메인을 소유하고 있으며 www.contoso.comwww.contoso.org의 예를 사용한다고 가정합니다.

이 문서에서는 다음 방법을 설명합니다.

  • 네트워크 설정
  • 애플리케이션 게이트웨이 만들기
  • 수신기 및 리디렉션 규칙 추가
  • 백 엔드 풀로 가상 머신 확장 집합 만들기
  • 도메인에서 CNAME 레코드 만들기

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

필수 조건

  • 이 자습서에는 Azure CLI 버전 2.0.4 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.

리소스 그룹 만들기

리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. az group create를 사용하여 리소스 그룹을 만듭니다.

다음 예제에서는 eastus 위치에 myResourceGroupAG라는 리소스 그룹을 만듭니다.

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 80 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --public-ip-address myAGPublicIPAddress

애플리케이션 게이트웨이가 생성될 때까지 몇 분 정도 걸릴 수 있습니다. 애플리케이션 게이트웨이가 생성되면 다음과 같은 새 기능을 볼 수 있습니다.

  • appGatewayBackendPool - 애플리케이션 게이트웨이에 백 엔드 주소 풀이 하나 이상 있어야 합니다.
  • appGatewayBackendHttpSettings - 포트 80 및 HTTP 프로토콜을 통신에 사용하도록 지정합니다.
  • appGatewayHttpListener - appGatewayBackendPool에 연결되는 기본 수신기입니다.
  • appGatewayFrontendIP - myAGPublicIPAddressappGatewayHttpListener에 할당합니다.
  • rule1 - appGatewayHttpListener에 연결되는 기본 라우팅 규칙입니다.

수신기 및 규칙 추가

애플리케이션 게이트웨이에서 트래픽을 백 엔드 풀로 적절히 라우팅할 수 있는 수신기가 필요합니다. 이 자습서에서는 두 도메인에 대해 두 개의 수신기를 만듭니다. 이 예제에서는 www.contoso.comwww.contoso.org의 도메인에 대해 수신기가 생성됩니다.

az network application-gateway http-listener create를 사용하여 트래픽을 라우팅하는 데 필요한 백 엔드 수신기를 추가합니다.

az network application-gateway http-listener create \
  --name contosoComListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.contoso.com
az network application-gateway http-listener create \
  --name contosoOrgListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.contoso.org

리디렉션 구성 추가

az network application-gateway redirect-config create를 사용하여 애플리케이션 게이트웨이에서 www.consoto.org의 트래픽을 www.contoso.com의 수신기로 전송하는 리디렉션 구성을 추가합니다.

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

라우팅 규칙 추가

규칙은 생성된 순서대로 처리되며, 애플리케이션 게이트웨이로 전송된 URL과 일치하는 첫 번째 규칙을 사용하여 트래픽이 리디렉션됩니다. 예를 들어 기본 수신기를 사용하는 규칙과 다중 사이트 수신기를 사용하는 규칙이 둘 다 같은 포트에 있는 경우 다중 사이트 규칙이 예상대로 작동하려면 다중 사이트 수신기를 사용하는 규칙은 기본 수신기를 사용하는 규칙 앞에 나열되어야 합니다.

이 예제에서는 두 개의 새 규칙을 만들고 생성된 기본 규칙을 삭제합니다. az network application-gateway rule create를 사용하여 규칙을 추가할 수 있습니다.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoComRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoComListener \
  --rule-type Basic \
  --address-pool appGatewayBackendPool
az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoOrgRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoOrgListener \
  --rule-type Basic \
  --redirect-config orgToCom
az network application-gateway rule delete \
  --gateway-name myAppGateway \
  --name rule1 \
  --resource-group myResourceGroupAG

가상 머신 확장 집합 만들기

이 예제에서는 생성한 백 엔드 풀을 지원하는 가상 머신 확장 집합을 만듭니다. 만든 확장 집합에는 myvmss라는 이름이 지정되며 NGINX가 설치되는 두 개의 가상 머신 인스턴스를 포함합니다.

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

도메인에서 CNAME 레코드 만들기

애플리케이션 게이트웨이가 해당 공용 IP 주소로 생성된 후 DNS 주소를 가져와 도메인에서 CNAME 레코드를 만드는 데 사용할 수 있습니다. az network public-ip show를 사용하여 애플리케이션 게이트웨이의 DNS 주소를 가져올 수 있습니다. DNSSettings의 fqdn 값을 복사하여 만드는 CNAME 레코드의 값으로 사용합니다. A 레코드를 사용할 경우 애플리케이션 게이트웨이를 다시 시작할 때 VIP가 변경될 수 있으므로 권장되지 않습니다.

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

애플리케이션 게이트웨이 테스트

브라우저의 주소 표시줄에 도메인 이름을 입력합니다. 예: http://www.contoso.com.

애플리케이션 게이트웨이에서 contoso 사이트 테스트

주소를 다른 도메인(예: http://www.contoso.org ) 으로 변경하면 트래픽이 www.contoso.com의 수신기로 다시 리디렉션되었다고 표시됩니다.

다음 단계

이 자습서에서는 다음 작업 방법을 알아보았습니다.

  • 네트워크 설정
  • 애플리케이션 게이트웨이 만들기
  • 수신기 및 리디렉션 규칙 추가
  • 백 엔드 풀로 가상 머신 확장 집합 만들기
  • 도메인에서 CNAME 레코드 만들기