Configurer la réécriture d'URL pour un équilibreur de charge d'application classique

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:

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

    /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

  1. Accédez à la page "Équilibrage de charge" dans Google Cloud Console.
    Accéder à la page Équilibrage de charge
  2. Cliquez sur http-lb.
  3. Cliquez sur Modifier .
  4. Laissez la fenêtre ouverte pour continuer.

Modifier les règles d'hôte et de chemin d'accès

  1. Dans la colonne de gauche de l'écran, cliquez sur Règles d'hôte et de chemin d'accès.
  2. Sélectionnez Règle d'hôte et de chemin d'accès avancée (redirection et réécriture d'URL).
  3. 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.
  4. Cliquez sur l'icône en forme de crayon () associée à la ligne /love-to-fetch/* Route traffic to a single backend: dogs.
  5. Sous Chemins d'accès, supprimez /love-to-fetch/* et ajoutez /*.
  6. Sous Action, sélectionnez Acheminer le trafic vers un backend unique.
  7. Cliquez sur Action complémentaire (réécriture d'URL).
  8. Laissez la zone Réécriture de l'hôte vide.
  9. Sous Réécriture du préfixe de chemin d'accès, saisissez /love-to-fetch/.
  10. Sous Backend, sélectionnez dogs.
  11. Cliquez sur Enregistrer.
  12. 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 cats
    /* Acheminer le trafic vers un backend unique dogs

  13. Si tout semble correct, cliquez sur Mettre à jour pour mettre à jour votre équilibreur de charge HTTP.

gcloud

  1. 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
    
  2. 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.

  3. 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.

Étape suivante