이 예시에서는 URL 리디렉션을 사용하여 포트 80(HTTP)에서 포트 443(HTTPS)로 모든 요청을 리디렉션하는 방법을 보여줍니다.
HTTPS는 TLS(SSL)를 사용하여 HTTP 요청과 응답을 암호화하므로 더 안전하고 보안성이 높습니다. HTTPS를 사용하는 웹사이트의 URL은 시작 부분에 http://
대신 https://
를 사용합니다.
기존 부하 분산기
포트 443으로 HTTPS 트래픽을 제공하는 외부 HTTPS 부하 분산기(여기서는 LB1이라고 함)가 이미 있으면 다음 설정에 따라 부분 외부 HTTP 부하 분산기(LB2)를 만들어야 합니다.
- LB1에서 사용하는 것과 동일한 프런트엔드 IP 주소
- URL 맵에 구성된 리디렉션
이러한 부분 HTTP 부하 분산기는 HTTPS 부하 분산기와 동일한 IP 주소를 사용하고 HTTP 요청을 부하 분산기의 HTTPS 프런트엔드로 리디렉션합니다.
이 아키텍처는 다음 다이어그램에 나와 있습니다.
HTTPS 부하 분산기로 트래픽 리디렉션
외부 HTTPS 부하 분산기(LB1)가 작동하는지 확인한 후 프런트엔드를 사용하여 트래픽을 LB1로 리디렉션하도록 부분 외부 HTTP 부하 분산기(LB2)를 만들 수 있습니다.
이 예시에서는 301 응답 코드를 사용합니다. 다른 응답 코드를 대신 사용할 수 있습니다.
gcloud
로 리디렉션을 구성하려면 YAML 파일을 가져오고 대상 HTTP 프록시가 트래픽을 리디렉션하는 URL 맵을 가리키는지 확인해야 합니다. Google Cloud 콘솔을 사용하는 경우 이 작업이 자동으로 수행됩니다.
Google Cloud 콘솔에서는 리전 외부 HTTP(S) 부하 분산기가 지원되지 않습니다.
gcloud
- YAML 파일
/tmp/web-map-http.yaml
을 만듭니다. 이 예시에서는 MOVED_PERMANENTLY_DEFAULT를 응답 코드로 사용합니다. - URL 맵의 유효성을 검사합니다.
- YAML 파일을 가져와 HTTP 부하 분산기의 URL 맵을 만듭니다. 이 URL 맵의 이름은
web-map-http
입니다. - URL 맵이 업데이트되었는지 확인합니다. HTTP 부하 분산기의 URL 맵은 다음과 비슷합니다.
web-map-http
를 URL 맵으로 사용하여 새 대상 HTTP 프록시를 만들거나 기존 대상 HTTP 프록시를 업데이트합니다.- 수신 요청을 프록시로 라우팅하는 전달 규칙을 만듭니다.
--address
플래그는 외부 HTTPS 부하 분산기에 사용되는 IP 주소와 동일한 IP 주소인lb-ipv4-1
을 지정합니다.
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¶meter2=value2 expectedOutputUrl: https://example.com/test/?parameter1=value1¶meter2=value2 expectedRedirectResponseCode: 301
테스트를 통과하고 명령어가 성공 메시지를 출력하면 변경사항을 URL 맵에 저장합니다.
기존 URL 맵을 업데이트하면 다음 메시지가 표시됩니다.
Url Map [web-map-http] will be overwritten. Do you want to continue (Y/n)?
계속하려면 Y를 누릅니다.
HTTP-HTTPS 간 리디렉션 테스트
두 부하 분산기 모두에서 사용하는 예약된 IP 주소를 기록합니다.
이 예시에서는 예약된 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
관련 프로시져
Terraform을 사용하려면 HTTP-HTTPS 간 리디렉션 탭을 참조하세요.
GKE의 경우 GKE 문서의 HTTP-HTTPS 간 리디렉션을 참조하세요.
내부 HTTP(S) 부하 분산기에 대한 내용은 내부 HTTP(S) 부하 분산기의 HTTP-HTTPS 간 리디렉션 설정을 참조하세요.
다른 유형의 리디렉션은 URL 리디렉션을 참조하세요.