Cet exemple illustre la réécriture du chemin spécifié dans une requête pour un équilibreur de charge d'application classique.
Pour configurer la gestion du trafic pour les équilibreurs de charge d'application externes globaux et régionaux, consultez les pages suivantes:
- Configurer la gestion du trafic pour les équilibreurs de charge d'applications externes globaux
- Configurer la gestion du trafic pour les équilibreurs de charge d'applications externes régionaux
Avant de commencer
Découvrez la fonctionnalité de réécriture d'URL.
Documentez-vous sur les mappages d'URL en général et les outils de mise en correspondance des chemins d'accès en particulier.
L'exemple de réécriture d'URL suppose que vous avez déjà créé votre équilibreur de charge d'application externe en suivant les étapes décrites dans la page Configurer un équilibreur de charge avec des buckets Cloud Storage.
Cet exemple vous guide à travers la création de deux ressources :
http://IP_ADDRESS/never-fetch/three-cats.jpg
http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
Où
/never-fetch/three-cats.jpg
est stocké dans/cats
, qui est le service par défaut, et/love-to-fetch/two-dogs.jpg
est stocké dans/dogs
.À ce stade, le mappage d'URL ressemble à ceci :
gcloud compute url-maps describe http-lb
creationTimestamp: '2020-10-13T11:18:10.561-07:00' defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats fingerprint: MKfYsObzqgw= hostRules: - hosts: - '*' pathMatcher: path-matcher-1 id: '1420501688756228493' kind: compute#urlMap name: test-bucket pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats name: path-matcher-1 pathRules: - paths: - /love-to-fetch/* service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/http-lb
Modifier le mappage d'URL
Dans cet exemple, vous réécrivez l'URL /love-to-fetch/
afin que les utilisateurs puissent accéder à l'image two-dogs.jpg
avec cette URL simplifiée :
http://IP_ADDRESS/two-dogs.jpg
Pour ce faire, modifiez le mappage d'URL de l'équilibreur de charge comme suit :
Console
Modifier votre équilibreur de charge
- Accédez à la page Équilibrage de charge dans Google Cloud Console.
Accéder à la page Équilibrage de charge - Cliquez sur
http-lb
. - Cliquez sur Modifier .
- Laissez la fenêtre ouverte pour continuer.
Modifier les règles d'hôte et de chemin d'accès
- Dans la colonne de gauche de l'écran, cliquez sur Règles d'hôte et de chemin d'accès.
- Sélectionnez Règle d'hôte et de chemin d'accès avancée (redirection et réécriture d'URL).
- Cliquez sur la ligne contenant la règle de chemin autre que celle par défaut. Dans ce cas, il s'agit de la ligne qui comporte un astérisque (
*
) pour tous les hôtes. - Cliquez sur l'icône en forme de crayon (
/love-to-fetch/* Route traffic to a single backend: dogs
.
) associée à la ligne - Sous Chemins d'accès, supprimez
/love-to-fetch/*
et ajoutez/*
. - Sous Action, sélectionnez Acheminer le trafic vers un backend unique.
- Cliquez sur Action complémentaire (réécriture d'URL).
- Laissez la zone Réécriture de l'hôte vide.
- Sous Réécriture du préfixe de chemin d'accès, saisissez
/love-to-fetch/
. - Sous Backend, sélectionnez
dogs
. - Cliquez sur Enregistrer.
Cliquez sur OK. La nouvelle règle d'hôte et de chemin d'accès se présente comme suit :
Chemins d'accès Action Backend Sans correspondance (par défaut) Acheminer le trafic vers un backend unique chats /* Acheminer le trafic vers un backend unique chiens Si tout semble correct, cliquez sur Mettre à jour pour mettre à jour votre équilibreur de charge HTTP.
gcloud
Créez un fichier YAML
/tmp/http-lb.yaml
, en veillant à remplacer PROJECT_ID par l'ID de votre projet.Lorsqu'un utilisateur demande le chemin d'accès
/*
, le chemin d'accès est réécrit dans le backend à l'emplacement réel du contenu, qui est/love-to-fetch/*
.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: http-lb pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats name: path-matcher-1 pathRules: - paths: - /* routeAction: urlRewrite: pathPrefixRewrite: /love-to-fetch/ service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs tests: - description: Test routing to backend bucket, dogs host: example.com path: /love-to-fetch/test service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs
Validez le mappage d'URL.
gcloud compute url-maps validate --source /tmp/http-lb.yaml
Si les tests réussissent et que le résultat de la commande est positif, enregistrez les modifications dans le mappage d'URL.
Mettez à jour le mappage d'URL.
gcloud compute url-maps import http-lb \ --source /tmp/http-lb.yaml \ --global
Test
Notez l'adresse IPv4 réservée :
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Une fois le délai de prise en compte des modifications écoulé, vous pouvez tester cette configuration.
Dans la ligne de commande, exécutez la commande curl suivante :
curl http://IP_ADDRESS/two-dogs.jpg
Dans un navigateur, ouvrez http://IP_ADDRESS/two-dogs.jpg
.