IAP가 GCP 로드 밸런서로 구성된 경우 HTTP에서 HTTPS로 어떻게 리디렉션할 수 있나요?

IAP가 GCP 로드 밸런서로 구성된 경우 HTTP에서 HTTPS로 어떻게 리디렉션할 수 있나요?

현재 로드 밸런서 뒤에 있는 IAP(Identity-Aware-Proxy)로 인증된 Google Compute Engine에서 호스팅되는 웹사이트가 있습니다. 이 모든 것은 https를 통해 훌륭하게 작동하지만 현재는 404로 응답하므로 http가 https로 리디렉션되는지 확인하고 싶었습니다.

그래서 나는 따라갔다.https://cloud.google.com/load-balancing/docs/https/setting-up-http-https-redirect이는 http 트래픽을 https로 리디렉션하기 위해 두 번째 로드 밸런서를 설정하라는 메시지를 표시합니다.

그러나 문제는 이 지침을 따른 후 다음을 탐색할 때입니다.http://my-website.com다음 오류가 발생합니다.

오류 403(금지됨)!!1

  1. 그건 오류입니다.

귀하의 클라이언트는 이 서버에서 URL을 가져올 수 있는 권한이 없습니다. 그게 우리가 아는 전부 야.

http 로드 밸런서는 301 - 영구 전체 경로 리디렉션으로 설정되어 있지만 브라우저 개발자 도구 네트워크 탭에는 리디렉션이 발생하지 않습니다. 403으로 바로 응답합니다. URL도 http:// 체계를 유지합니다.


요약하면 내 설정은 다음과 같습니다.

외부 HTTPS 로드 밸런서

  • 프런트엔드 - HTTPS, 고정 IP, HTTPS 전용
  • 백엔드 - IAP(Identity-Aware-Proxy)(Identity Platform을 통한 이메일 인증) -> Compute Engine 인스턴스 그룹

외부 HTTP 로드 밸런서

  • 프런트엔드 - HTTP, 고정 IP(위의 HTTPS 로드 밸런서와 동일)
  • 백엔드 - 없음
  • 호스트 및 경로 규칙:
    • 방법:고급 호스트 및 경로 규칙(URL 리디렉션, URL 재작성)
    • 행동:클라이언트를 다른 호스트/경로로 리디렉션
    • 호스트 리디렉션: https://my-website.com
    • 경로 값:*
    • 리디렉션 응답 코드:301 - 영구 이전
    • HTTPS 리디렉션:활성화됨

403을 얻지 않고 이 문제를 해결하는 방법에 대한 아이디어를 주시면 감사하겠습니다!

답변1

설명해주신 방법url-map에 문제가 있는 것 같습니다http사이트 버전에 액세스할 수 있기 때문입니다 .

확실하게 확인하려면 다시 확인하세요(또는새로 만들기) url-map gcloud명령:

gcloud compute url-maps describe web-map-http

creationTimestamp: '2020-12-02T03:18:27.053-08:00'
defaultUrlRedirect:
  httpsRedirect: true
  redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
fingerprint: KU2hPu1ao=
id: '50586028237895404'
kind: compute#urlMap
name: web-map-http
selfLink: https://www.googleapis.com/compute/v1/projects/xxxxx/global/urlMaps/web-map-http

URL 맵이 준비되면 대상 프록시를 만듭니다.

gcloud compute target-http-proxies create http-lb-proxy \
   --url-map=web-map-http \
   --global

결과:

gcloud compute target-http-proxies describe http-lb-proxy
creationTimestamp: '2020-12-02T03:19:39.090-08:00'
fingerprint: lgJkIY8E=
id: '3781119498457764'
kind: compute#targetHttpProxy
name: http-lb-proxy
selfLink: https://www.googleapis.com/compute/v1/projects/xxxx/global/targetHttpProxies/http-lb-proxy
urlMap: https://www.googleapis.com/compute/v1/projects/xxxx/global/urlMaps/web-map-http

전달 규칙은 다음과 같습니다.

gcloud compute forwarding-rules create http-content-rule \
   --address=lb-ipv4-1 \ # Same IP address used for HTTPS load balancer
   --global \
   --target-http-proxy=http-lb-proxy \
   --ports=80

다음과 같아야 합니다.

gcloud compute forwarding-rules describe http-content-rule --global
IPAddress: 34.107.123.141
IPProtocol: TCP
creationTimestamp: '2020-12-02T03:22:38.132-08:00'
description: ''
fingerprint: L1vA0Ik9Y=
id: '888330202637841'
kind: compute#forwardingRule
loadBalancingScheme: EXTERNAL
name: http-content-rule
networkTier: PREMIUM
portRange: 80-80
selfLink: https://www.googleapis.com/compute/v1/projects/xxxx/global/forwardingRules/http-content-rule
target: https://www.googleapis.com/compute/v1/projects/xxxx/global/targetHttpProxies/http-lb-proxy

HTTP와 HTTPS LB 모두에 동일한 공용 IP를 사용해야 합니다. 들어오는 트래픽이 차단되지 않으면 방화벽 규칙을 확인하세요.

curl모든 작업을 올바르게 수행하면 예제에 표시된 것과 동일한 출력을 얻을 수 있습니다 .

관련 정보