Configurer une redirection HTTP vers HTTPS pour les équilibreurs de charge d'application externes régionaux

Cette page explique comment configurer une redirection HTTP vers HTTPS pour l'équilibreur de charge d'application externe régional. Cette page est réservée aux équilibreurs de charge d'application externes régionaux. Si vous utilisez un équilibreur de charge en mode différent, consultez l'une des pages suivantes :

Cet exemple montre comment utiliser les redirections de mappage d'URL pour rediriger toutes les requêtes HTTP vers HTTPS. Cet exemple montre comment configurer des redirections à l'aide des ports connus 80 (pour HTTP) et 443 (pour HTTPS). Toutefois, vous n'êtes pas obligé d'utiliser ces numéros de port. Chaque règle de transfert d'un équilibreur de charge d'application peut référencer un port unique compris entre 1 et 65 535.

HTTPS utilise TLS (SSL) pour chiffrer les requêtes et les réponses HTTP, ce qui les rend plus sûres et plus sécurisées. L'URL d'un site Web utilisant HTTPS commence par https:// au lieu de http://.

Pour les nouveaux équilibreurs de charge HTTPS

Les équilibreurs de charge d'application externes régionaux ne sont pas compatibles avec la création de redirections HTTP vers HTTPS lors de la création d'un équilibreur de charge. Vous devez d'abord suivre les instructions du guide sur le backend de Compute Engine pour créer un équilibreur de charge. Vous pouvez ensuite utiliser les instructions de la section suivante pour configurer une redirection pour toutes les requêtes HTTP vers HTTPS.

Cette procédure suppose que vous disposez déjà d'un équilibreur de charge HTTPS externe qui diffuse du trafic HTTPS sur le port 443.

Pour les équilibreurs de charge existants

Si vous disposez déjà d'un équilibreur de charge d'application HTTPS (appelé ici LB1) qui diffuse du trafic HTTPS sur le port 443, vous devez créer un équilibreur de charge d'application HTTP partiel (appelé ici LB2) avec la configuration suivante :

  • Adresse IP frontend identique à LB1
  • Redirection configurée dans le mappage d'URL

Cet équilibreur de charge HTTP partiel utilise la même adresse IP que votre équilibreur de charge HTTPS et redirige les requêtes HTTP vers l'interface HTTPS de votre équilibreur de charge.

Cette architecture est illustrée par le schéma suivant.

Architecture de configuration de la redirection HTTP vers HTTPS.
Figure 2. Architecture de configuration de la redirection HTTP vers HTTPS (cliquez pour agrandir).

Rediriger le trafic vers l'équilibreur de charge HTTPS

Après avoir vérifié que l'équilibreur de charge HTTPS (LB1) fonctionne, vous pouvez créer l'équilibreur de charge HTTP partiel (LB2) avec une interface configurée pour rediriger le trafic vers LB1.

Cet exemple utilise le code de réponse 301. Vous pouvez également utiliser un autre code de réponse.

Pour configurer la redirection avec gcloud, vous devez importer un fichier YAML et vous assurer que votre proxy HTTP cible pointe vers le mappage d'URL qui redirige le trafic. Si vous utilisez la console Google Cloud, cette opération est effectuée automatiquement.

Les équilibreurs de charge d'application externes régionaux ne sont pas compatibles avec la console Google Cloud.

gcloud

  1. Créez un fichier YAML /tmp/web-map-http.yaml. Cet exemple utilise MOVED_PERMANENTLY_DEFAULT comme code de réponse.
  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. Créez le mappage d'URL de l'équilibreur de charge HTTP en important le fichier YAML. Le nom de ce mappage d'URL est web-map-http.
  4.        gcloud compute url-maps import web-map-http \
               --source /tmp/web-map-http.yaml \
               --region=REGION
           

    Si vous mettez à jour un mappage d'URL existant, l'invite suivante apparaît :

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

    Pour continuer, appuyez sur Y.

  5. Vérifiez que le mappage d'URL est mis à jour. Le mappage d'URL de votre équilibreur de charge HTTP doit se présenter comme suit :
  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. Créez un proxy HTTP cible ou mettez à jour un proxy HTTP existant en utilisant web-map-http comme mappage d'URL.
  8.        gcloud compute target-http-proxies create http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
    OU
            gcloud compute target-http-proxies update http-lb-proxy \
               --url-map=web-map-http \
               --region=REGION
           
  9. Créez une règle de transfert pour acheminer les requêtes entrantes vers le proxy. L'option --address spécifie la valeur lb-ipv4-1, qui correspond à la même adresse IP que celle utilisée pour l'équilibreur de charge HTTPS externe.
  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
           

Tester la redirection de HTTP vers HTTPS

Notez l'adresse IP réservée que vous utilisez pour les deux équilibreurs de charge.

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

Dans cet exemple, supposons que l'adresse IP réservée est 34.98.77.106. L'URL http://34.98.77.106/ redirige vers https://34.98.77.106/.

Au bout de quelques minutes, vous pouvez effectuer un test en exécutant la commande curl suivante.

curl -v http://hostname.com

Exemple de résultat :

* 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

Étape suivante