![Como você pode redirecionar de HTTP para HTTPS onde o IAP está configurado com balanceadores de carga do GCP?](https://rvso.com/image/760611/Como%20voc%C3%AA%20pode%20redirecionar%20de%20HTTP%20para%20HTTPS%20onde%20o%20IAP%20est%C3%A1%20configurado%20com%20balanceadores%20de%20carga%20do%20GCP%3F.png)
Atualmente, tenho um site hospedado no Google Compute Engine autenticado com Identity-Aware-Proxy, que fica atrás de um balanceador de carga. Tudo isso funciona muito bem em https, mas eu queria ter certeza de que http redireciona para https, pois atualmente ele responde apenas com um 404.
Então, eu seguihttps://cloud.google.com/load-balancing/docs/https/setting-up-http-https-redirectque informa para configurar um segundo balanceador de carga para redirecionar o tráfego http para https.
A questão, no entanto, é que depois de seguir estas instruções, quando navego parahttp://meu-site.comEstou tendo o erro a seguir:
Erro 403 (Proibido)!!1
- Isso é um erro.
Seu cliente não tem permissão para obter URL/ deste servidor. Isso é tudo que sabemos.
Embora o balanceador de carga http esteja configurado com um redirecionamento de caminho completo permanentemente movido 301, na guia de rede das ferramentas do desenvolvedor do navegador não há redirecionamento. Ele apenas responde imediatamente com o 403. A URL também permanece com o esquema http://.
Para resumir, esta é a aparência da minha configuração:
Balanceador de carga HTTPS externo
- Frontend - HTTPS, IP estático, somente HTTPS
- Back-end: Identity-Aware-Proxy (autenticação de e-mail via Identity Platform) -> grupo de instâncias do Compute Engine
Balanceador de carga HTTP externo
- Frontend - HTTP, IP estático (igual ao balanceador de carga HTTPS acima)
- Back-end - Nenhum
- Regras de host e caminho:
- Modo:Regra avançada de host e caminho (redirecionamento de URL, reescrita de URL)
- Ação:Redirecione o cliente para host/caminho diferente
- Redirecionamento de host: https://meu-site.com
- Valor do caminho:*
- Código de resposta de redirecionamento:301 mudou-se permanentemente
- Redirecionamento HTTPS:Habilitado
Qualquer idéia de como consertar isso e não obter o 403 seria muito apreciada!
Responder1
Do jeito que você descreveuparece que você tem um problema com o mapa de URLporque você pode acessar a http
versão do seu site.
Para ter certeza absoluta, verifique novamente (ouCrie um novo) mapa de url com gcloud
comando:
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
Quando você tiver seu mapa de URL pronto, crie um proxy de destino:
gcloud compute target-http-proxies create http-lb-proxy \
--url-map=web-map-http \
--global
resultado:
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
e uma regra de encaminhamento:
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
que deve ser parecido com:
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
Certifique-se de usar o mesmo IP público para LBs HTTP e HTTPS. Verifique as regras do firewall se o tráfego de entrada não for bloqueado.
Se você fizer tudo correto, deverá obter a mesma curl
saída apresentada no exemplo.