Configurare la riscrittura degli URL per un bilanciatore del carico delle applicazioni classico

Questo esempio mostra la riscrittura del percorso specificato in una richiesta per un bilanciatore del carico delle applicazioni classico.

Per configurare la gestione del traffico per gli Application Load Balancer esterni globali e per gli Application Load Balancer esterni a livello di regione, consulta le pagine seguenti:

Prima di iniziare

  • Scopri di più sulle riscritture degli URL.

  • Leggi informazioni sulle mappe URL in generale e sui matcher di percorso in particolare.

  • L'esempio di riscrittura dell'URL presuppone che tu abbia già creato un Application Load Balancer esterno seguendo i passaggi descritti in Configurazione di un bilanciatore del carico con i bucket Cloud Storage.

    Questo esempio ti porta alla creazione di due risorse:

    • http://IP_ADDRESS/never-fetch/three-cats.jpg
    • http://IP_ADDRESS/love-to-fetch/two-dogs.jpg

    Dove /never-fetch/three-cats.jpg è archiviato in /cats, che è il servizio predefinito, e /love-to-fetch/two-dogs.jpg è archiviato in /dogs.

    A questo punto, la mappa URL ha il seguente aspetto:

    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
    

Modifica della mappa URL

In questo esempio, riscrivi l'URL /love-to-fetch/ in modo che gli utenti possano raggiungere l'immagine two-dogs.jpg con questo URL semplificato:

  • http://IP_ADDRESS/two-dogs.jpg

Per farlo, modifica la mappa URL del bilanciatore del carico come segue:

Console

Modifica il bilanciatore del carico

  1. Vai alla pagina Bilanciamento del carico nella console Google Cloud.
    Vai alla pagina Bilanciamento del carico
  2. Fai clic su http-lb.
  3. Fai clic su Modifica .
  4. Per continuare, tieni la finestra aperta.

Modifica le regole host e percorso

  1. Nella colonna a sinistra dello schermo, fai clic su Regole host e percorso.
  2. Seleziona Regola avanzata per host e percorso (reindirizzamento URL, riscrittura URL).
  3. Fai clic sulla riga che contiene la regola del percorso non predefinita, in questo caso la riga con un asterisco (*) per tutti gli host.
  4. Fai clic sull'icona a forma di matita per la riga /love-to-fetch/* Route traffic to a single backend: dogs.
  5. In Percorsi, elimina /love-to-fetch/* e aggiungi /*.
  6. In Azione, seleziona Instrada il traffico a un singolo backend.
  7. Fai clic su Azione aggiuntiva (riscrittura URL).
  8. Lascia vuoto il campo Riscrittura host.
  9. In Riscrittura prefisso percorso, inserisci /love-to-fetch/.
  10. In Backend, seleziona dogs.
  11. Fai clic su Salva.
  12. Fai clic su Fine. La nuova regola per host e percorso avrà il seguente aspetto:

    Percorsi Azione Backend
    Qualsiasi senza corrispondenza (valore predefinito) Instrada il traffico a un singolo backend gatti
    /* Instrada il traffico a un singolo backend cani

  13. Se è tutto corretto, fai clic su Aggiorna per aggiornare il bilanciatore del carico HTTP.

gcloud

  1. Crea un file YAML /tmp/http-lb.yaml, assicurandoti di sostituire PROJECT_ID con il tuo ID progetto.

    Quando un utente richiede il percorso /*, questo viene riscritto nel backend nella posizione effettiva dei contenuti, che è /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. Convalida la mappa URL.

    gcloud compute url-maps validate --source /tmp/http-lb.yaml
    

    Se i test vengono superati e il comando restituisce un messaggio di esito positivo, salva le modifiche alla mappa URL.

  3. Aggiorna la mappa URL.

    gcloud compute url-maps import http-lb \
       --source /tmp/http-lb.yaml \
       --global
    

Test

Prendi nota dell'indirizzo IPv4 riservato:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Dopo aver atteso alcuni minuti per la propagazione delle modifiche, puoi testare questa configurazione.

Nella riga di comando, esegui il seguente comando curl:

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

Apri http://IP_ADDRESS/two-dogs.jpg in un browser.

Passaggi successivi