Cette rubrique explique comment utiliser les redirections de mappage d'URL pour rediriger toutes les requêtes de l'équilibreur de charge d'application interne du protocole HTTP vers HTTPS. L'exemple de cette page utilise les ports connus 80 (pour HTTP) et 443 (pour HTTPS). Toutefois, vous n'êtes pas obligé d'utiliser ces numéros de port spécifiques. 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.
Pour utiliser des redirections HTTP vers HTTPS, vous devez créer deux équilibreurs de charge, un pour le trafic HTTPS et un pour le trafic HTTP. Chaque équilibreur de charge possède ses propres règles de transfert, proxy cible et mappage d'URL, mais ils partagent la même adresse IP. Pour l'équilibreur de charge HTTP, il n'est pas nécessaire de configurer un backend, car l'interface redirige le trafic vers le backend de l'équilibreur de charge HTTPS.
En règle générale, pour rediriger le trafic HTTP vers HTTPS, vous devez suivre la procédure suivante :
- Créez un équilibreur de charge HTTPS interne normal avec une adresse IP interne réservée et partagée.
- Testez l'équilibreur de charge HTTPS pour vous assurer qu'il fonctionne.
Redirigez le trafic vers l'équilibreur de charge HTTPS.
Pour ce faire, vous devez créer un équilibreur de charge HTTP interne partiel qui ne comporte qu'une interface. L'interface reçoit les requêtes, puis les redirige vers l'équilibreur de charge HTTPS à l'aide des ressources suivantes :
- Une règle de transfert avec la même adresse IP interne réservée que l'équilibreur de charge HTTPS que vous avez créé à l'étape 1
- Un proxy HTTP cible
- Un mappage d'URL qui redirige le trafic vers l'équilibreur de charge HTTPS
Comme le montre le schéma suivant, l'équilibreur de charge HTTPS est un équilibreur de charge normal doté des composants d'équilibreur de charge d'application interne attendus.
L'équilibreur de charge HTTP possède la même adresse IP que l'équilibreur de charge HTTPS, et une instruction de redirection dans le mappage d'URL.
Créer l'équilibreur de charge HTTPS interne
Pour configurer un équilibreur de charge d'application interne régional, suivez les instructions de la section Configurer un équilibreur de charge d'application interne.
Si vous disposez déjà d'un équilibreur de charge d'application interne régional opérationnel, assurez-vous qu'il dispose d'une adresse IP partagée réservée et partagée pour la règle de transfert, puis passez à la section suivante, Rediriger le trafic vers l'équilibreur de charge HTTPS.
Pour les équilibreurs de charge d'application internes interrégionaux, suivez les instructions indiquées dans Configurer un équilibreur de charge d'application interne interrégional avec des backends de groupes d'instances de VM pour créer deux équilibreurs de charge, puis suivez les instructions indiquées dans Rediriger le trafic vers l'équilibreur de charge HTTPS.
Rediriger le trafic vers l'équilibreur de charge HTTPS
Créez un équilibreur de charge HTTP partiel ayant la même adresse IP que l'équilibreur de charge HTTPS créé à l'étape précédente. L'équilibreur de charge partiel redirige le trafic du port 80
vers le port 443
.
Console
Démarrer la configuration
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
- Cliquez sur Créer un équilibreur de charge.
- Dans le champ Type d'équilibreur de charge, sélectionnez Équilibreur de charge d'application (HTTP/HTTPS), puis cliquez sur Suivant.
- Pour Public ou interne, sélectionnez Interne, puis cliquez sur Suivant.
- Pour Déploiement interrégional ou dans une seule région, sélectionnez Recommandé pour les charges de travail régionales, puis cliquez sur Suivant.
- Cliquez sur Configurer.
Configuration de base
- Pour le nom de l'équilibreur de charge, saisissez
l7-ilb-http-redirect
. - Pour Région, sélectionnez
us-west1
. - Pour Réseau, sélectionnez
lb-network
.
Configurer le service de backend
- Cliquez sur Configuration du backend.
- Dans le menu Sélectionner des services de backend, sélectionnez le service de backend existant
l7-ilb-backend-service
. - Cliquez sur OK.
Configurez le mappage d'URL
- Cliquez sur Règles de routage.
- Sous Mode, sélectionnez Règle d'hôte et de chemin d'accès avancée.
- Cliquez sur Ajouter une règle d'hôte et de chemin d'accès.
Pour Hôtes, définissez
*
.Pour Outil de mise en correspondance des chemins d'accès (correspondances, actions et services), saisissez le code suivant :
name: matcher1 defaultUrlRedirect: httpsRedirect: true hostRedirect: IP_ADDRESS:443 redirectResponseCode: PERMANENT_REDIRECT
Assurez-vous que
l7-ilb-backend-service
est le seul service de backend pour tous les hôtes et chemins sans correspondance.
Pour en savoir plus sur la gestion du trafic, consultez la page Configurer la gestion du trafic pour les équilibreurs de charge d'application internes.
Configurer l'interface pour HTTP
- Cliquez sur Configuration de l'interface.
- Définissez le nom de la règle de transfert sur
l7-ilb-forwarding-rule
. - Définissez le paramètre Protocole sur
HTTP
. - Définissez le paramètre Sous-réseau sur
backend-subnet
. - Définissez le paramètre Port sur
80
. - Dans le menu Adresse IP, sélectionnez l'adresse IP partagée qui a été réservée pour la règle de transfert de l'équilibreur de charge HTTPS.
- Cliquez sur OK.
Vérifier la configuration
- Cliquez sur Vérifier et finaliser.
- Vérifiez les paramètres de configuration de votre équilibreur de charge.
- Facultatif : cliquez sur Code équivalent pour afficher la requête API REST qui sera utilisée pour créer l'équilibreur de charge.
- Cliquez sur Créer.
gcloud
Créez un mappage d'URL en créant un fichier YAML avec la configuration de redirection du trafic. Remplacez IP_ADDRESS par l'adresse IP partagée qui a été réservée pour la règle de transfert de l'équilibreur de charge HTTPS.
defaultService: regions/us-west1/backendServices/l7-ilb-backend-service kind: compute#urlMap name: l7-ilb-redirect-url-map hostRules: - hosts: - '*' pathMatcher: matcher1 pathMatchers: - name: matcher1 defaultUrlRedirect: hostRedirect: IP_ADDRESS:443 redirectResponseCode: PERMANENT_REDIRECT httpsRedirect: True
Importez le fichier YAML dans le nouveau mappage d'URL :
gcloud compute url-maps import l7-ilb-redirect-url-map \ --source=/tmp/url_map.yaml \ --region=us-west1
Créez le proxy cible de l'équilibreur de charge HTTP :
gcloud compute target-http-proxies create l7-ilb-http-proxy \ --url-map=l7-ilb-redirect-url-map \ --region=us-west1
Créez une règle de transfert et l'adresse IP partagée :
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --address=IP_ADDRESS \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-ilb-http-proxy \ --target-http-proxy-region=us-west1
Tester la redirection du trafic
Connectez-vous à la VM cliente.
gcloud compute ssh l7-ilb-client-us-west1-a \ --zone=us-west1-a
Envoyez une requête HTTP à IP_ADDRESS sur le port
80
, et attendez-vous à une redirection de trafic.curl -L -k IP_ADDRESS
Consultez l'exemple de sortie.
Page served from: l7-ilb-backend-w11t
Ajoutez
-vvv
pour afficher plus de détails.curl -L -k IP_ADDRESS -vvv
- Rebuilt URL to: IP_ADDRESS/
- Trying IP_ADDRESS...
- TCP_NODELAY set
- Connected to IP_ADDRESS (IP_ADDRESS) port 80 (#0) > GET / HTTP/1.1 > Host: IP_ADDRESS > User-Agent: curl/7.52.1 > Accept: / > < HTTP/1.1 308 Permanent Redirect < location: https://IP_ADDRESS:443/ < date: Fri, 07 Aug 2020 05:07:18 GMT < via: 1.1 google < content-length: 0 <
- Curl_http_done: called premature == 0
- Connection #0 to host IP_ADDRESS left intact
- Issue another request to this URL: 'https://IP_ADDRESS:443/'
- Trying IP_ADDRESS...
- TCP_NODELAY set
- Connected to IP_ADDRESS (IP_ADDRESS) port 443 (#1)
- ALPN, offering h2
- ALPN, offering http/1.1
- Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
- successfully set certificate verify locations:
- CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs ... ...
- SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
- ALPN, server accepted to use h2
- Server certificate:
- subject: O=Google TESTING; CN=test_cert_1
- start date: Jan 1 00:00:00 2015 GMT
- expire date: Jan 1 00:00:00 2025 GMT
- issuer: O=Google TESTING; CN=Intermediate CA
- SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
- Using HTTP2, server supports multi-use
- Connection state changed (HTTP/2 confirmed)
- Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
- Using Stream ID: 1 (easy handle 0x561a6b0e3ea0) > GET / HTTP/1.1 > Host: IP_ADDRESS > User-Agent: curl/7.52.1 > Accept: / >
- Connection state changed (MAX_CONCURRENT_STREAMS updated)! < HTTP/2 200 < date: Fri, 07 Aug 2020 05:07:18 GMT < server: Apache/2.4.25 (Debian) < last-modified: Thu, 06 Aug 2020 13:30:21 GMT < etag: "2c-5ac357d7a47ec" < accept-ranges: bytes < content-length: 44 < content-type: text/html < via: 1.1 google < Page served from: l7-ilb-backend-https-w11t
- Curl_http_done: called premature == 0
- Connection #1 to host IP_ADDRESS left intact
Étapes suivantes
Pour en savoir plus sur le fonctionnement des équilibreurs de charge d'application internes, consultez la page Présentation de l'équilibreur de charge d'application interne.
Pour gérer la ressource de sous-réseau proxy réservé requise par des équilibreurs de charge d'application internes, consultez la page Sous-réseau proxy réservé aux équilibreurs de charge d'application internes.