리전 외부 애플리케이션 부하 분산기의 HTTP-HTTPS 리디렉션 설정

이 페이지에서는 리전 외부 애플리케이션 부하 분산기에 대해 HTTP-HTTPS 리디렉션을 설정하는 방법을 보여줍니다. 이 페이지는 리전 외부 애플리케이션 부하 분산기에만 사용됩니다. 다른 모드에서 부하 분산기를 사용하는 경우 다음 페이지 중 하나를 참조하세요.

이 예시에서는 URL 맵 리디렉션을 사용하여 모든 요청을 HTTP에서 HTTPS로 리디렉션하는 방법을 보여줍니다. 이 예시에서는 잘 알려진 포트인 80(HTTP) 및 443(HTTPS)을 사용하여 리디렉션을 설정하는 방법을 보여줍니다. 하지만 이러한 특정 포트 번호를 사용할 필요는 없습니다. 애플리케이션 부하 분산기의 각 전달 규칙은 1~65535 범위의 단일 포트를 참조할 수 있습니다.

HTTPS는 TLS(SSL)를 사용하여 HTTP 요청과 응답을 암호화하므로 더 안전하고 보안성이 높습니다. HTTPS를 사용하는 웹사이트의 URL은 시작 부분에 http:// 대신 https://를 사용합니다.

새 HTTPS 부하 분산기

리전 외부 애플리케이션 부하 분산기는 새 부하 분산기를 만드는 동안 HTTP-HTTPS 리디렉션 만들기를 지원하지 않습니다. 먼저 Compute Engine 백엔드 가이드의 안내에 따라 새 부하 분산기를 만들어야 합니다. 그런 후 다음 섹션의 안내에 따라 HTTP에서 HTTPS로의 모든 요청에 대해 리디렉션을 설정할 수 있습니다.

이 절차에서는 포트 443에서 HTTPS 트래픽을 제공하는 외부 HTTPS 부하 분산기가 이미 있다고 가정합니다.

기존 부하 분산기

포트 443으로 HTTPS 트래픽을 제공하는 HTTPS 애플리케이션 부하 분산기(여기서는 LB1이라고 함)가 이미 있으면 다음 설정에 따라 부분 HTTP 애플리케이션 부하 분산기(LB2)를 만들어야 합니다.

  • LB1에서 사용하는 것과 동일한 프런트엔드 IP 주소
  • URL 맵에 구성된 리디렉션

이러한 부분 HTTP 부하 분산기는 HTTPS 부하 분산기와 동일한 IP 주소를 사용하고 HTTP 요청을 부하 분산기의 HTTPS 프런트엔드로 리디렉션합니다.

이 아키텍처는 다음 다이어그램에 나와 있습니다.

HTTP-HTTPS 리디렉션 구성 아키텍처.
그림 2. HTTP-HTTPS 간 리디렉션 구성 아키텍처(확대하려면 클릭)

HTTPS 부하 분산기로 트래픽 리디렉션

HTTPS 부하 분산기(LB1)가 작동하는지 확인한 후 프런트엔드를 사용하여 트래픽을 LB1로 리디렉션하도록 부분 HTTP 부하 분산기(LB2)를 만들 수 있습니다.

이 예시에서는 301 응답 코드를 사용합니다. 다른 응답 코드를 대신 사용할 수 있습니다.

gcloud로 리디렉션을 구성하려면 YAML 파일을 가져오고 대상 HTTP 프록시가 트래픽을 리디렉션하는 URL 맵을 가리키는지 확인해야 합니다. Google Cloud 콘솔을 사용하는 경우 이 작업이 자동으로 수행됩니다.

Google Cloud 콘솔에서는 리전 외부 애플리케이션 부하 분산기가 지원되지 않습니다.

gcloud

  1. YAML 파일 /tmp/web-map-http.yaml을 만듭니다. 이 예시에서는 MOVED_PERMANENTLY_DEFAULT를 응답 코드로 사용합니다.
  2.        kind: compute#urlMap
           name: web-map-http
           defaultUrlRedirect:
             redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
             httpsRedirect: True
           tests:
           - description: Test with no query parameters
             host: example.com
             path: /test/
             expectedOutputUrl: https://example.com/test/
             expectedRedirectResponseCode: 301
           - description: Test with query parameters
             host: example.com
             path: /test/?parameter1=value1&parameter2=value2
             expectedOutputUrl: https://example.com/test/?parameter1=value1&parameter2=value2
             expectedRedirectResponseCode: 301
           
  3. YAML 파일을 가져와 HTTP 부하 분산기의 URL 맵을 만듭니다. 이 URL 맵의 이름은 web-map-http입니다.
  4.        gcloud compute url-maps import web-map-http \
               --source /tmp/web-map-http.yaml \
               --region=REGION
           

    기존 URL 맵을 업데이트하면 다음 메시지가 표시됩니다.

           Url Map [web-map-http] will be overwritten.
    
           Do you want to continue (Y/n)?
           

    계속하려면 Y를 누릅니다.

  5. URL 맵이 업데이트되었는지 확인합니다. HTTP 부하 분산기의 URL 맵은 다음과 비슷합니다.
  6.        gcloud compute url-maps describe web-map-http \
               --region=REGION
           
           creationTimestamp: '2020-03-23T10:53:44.976-07:00'
           defaultUrlRedirect:
             httpsRedirect: true
             redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
           fingerprint: 3A5N_RLrED8=
           id: '2020316695093397831'
           kind: compute#urlMap
           name: web-map-http
           selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/urlMaps/web-map-http
           
  7. web-map-http를 URL 맵으로 사용하여 새 대상 HTTP 프록시를 만들거나 기존 대상 HTTP 프록시를 업데이트합니다.
  8.        gcloud compute target-http-proxies create http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
    OR
            gcloud compute target-http-proxies update http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
  9. 수신 요청을 프록시로 라우팅하는 전달 규칙을 만듭니다. --address 플래그는 외부 HTTPS 부하 분산기에 사용되는 IP 주소와 동일한 IP 주소인 lb-ipv4-1을 지정합니다.
  10.        gcloud compute forwarding-rules create http-content-rule \
               --load-balancing-scheme=EXTERNAL_MANAGED \
               --address=lb-ipv4-1 \
               --network-tier=STANDARD \
               --region=REGION \
               --target-http-proxy=http-lb-proxy \
               --target-http-proxy-region=REGION \
               --ports=80
           

HTTP-HTTPS 간 리디렉션 테스트

두 부하 분산기 모두에서 사용하는 예약된 IP 주소를 기록합니다.

gcloud compute addresses describe lb-ipv4-1 
--format="get(address)"
--region=REGION

이 예시에서는 예약된 IP 주소가 34.98.77.106이라고 가정합니다. http://34.98.77.106/ URL은 https://34.98.77.106/으로 리디렉션됩니다.

몇 분이 지난 후에 다음 curl 명령어를 실행하여 테스트할 수 있습니다.

curl -v http://hostname.com

샘플 결과:

* Connected to 34.98.77.106 (34.98.77.106) port 80 (#0)
> GET / HTTP/1.1
> Host: hostname.com
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Referrer-Policy: no-referrer
< Location: https://hostname.com
< Content-Length: 220
< Date: Fri, 30 Jul 2021 21:32:25 GMT
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://hostname.com">here</A>.
</BODY></HTML>
* Connection #0 to host hostname.com left intact

다음 단계