Configurer la réécriture d'URL pour les équilibreurs de charge HTTP(S) externes

Cet exemple illustre la réécriture du chemin spécifié dans une requête.

Avant de commencer

L'exemple de réécriture d'URL suppose que vous avez déjà créé votre équilibreur de charge HTTP(S) externe en suivant les étapes décrites dans Configurer un équilibreur de charge avec des buckets Cloud Storage.

Cet exemple vous guide à travers la création de deux URL :

  • http://IP_ADDRESS/static/us/three-cats.jpg
  • http://IP_ADDRESS/static/eu/two-dogs.jpg

/static/us/three-cats.jpg est stocké dans backend-bucket1, qui est le service par défaut, et /static/eu/two-dogs.jpg est stocké dans backend-bucket2.

À ce stade, le mappage d'URL ressemble à ceci :

gcloud compute url-maps describe http-lb
creationTimestamp: '2020-03-24T15:28:39.637-07:00'
defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/backend-bucket1
fingerprint: d8wZnrXtAJE=
hostRules:
- hosts:
  - '*'
  pathMatcher: path-matcher-1
id: '2488162556319315832'
kind: compute#urlMap
name: http-lb
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/backend-bucket1
  name: path-matcher-1
  pathRules:
  - paths:
    - /static/eu/*
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/backend-bucket2
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 /static/eu/ afin que les utilisateurs puissent accéder à l'image two-dogs.jpg avec cette URL simplifiée :

  • http://34.102.204.68/eu/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. Sous Action, sélectionnez Acheminer le trafic vers un backend unique.
  4. Sous Réécriture du préfixe de chemin d'accès, saisissez /static/eu/.
  5. Sous Backend, sélectionnez le bucket backend contenant two-dogs.jpg.
  6. Cliquez sur OK.

Vérifier et finaliser

  1. Dans le panneau de gauche, cliquez sur Vérification et finalisation.
  2. Comparez vos paramètres à ce que vous aviez l'intention de créer.
  3. Si tout semble correct, cliquez sur Mettre à jour pour créer 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. Remplacez également backend-bucket1 et backend-bucket2 par les noms de vos buckets.

    Lorsqu'un utilisateur demande le chemin d'accès /eu/*, le chemin d'accès est réécrit dans le backend à l'emplacement réel du contenu, qui est /static/eu/*.

    defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/backend-bucket1
    hostRules:
    - hosts:
      - '*'
      pathMatcher: path-matcher-1
    kind: compute#urlMap
    name: http-lb
    pathMatchers:
    - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/backend-bucket1
      name: path-matcher-1
      pathRules:
      - paths:
        - /eu/
        routeAction:
          urlRewrite:
            pathPrefixRewrite: /static/eu/
        service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/backend-bucket2
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/http-lb
    
  2. 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

Testez cette configuration en exécutant :

curl http://IP_ADDRESS/eu/two-dogs.jpg

Dans un navigateur, ouvrez http://IP_ADDRESS/eu/two-dogs.jpg.