Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Ascoltatori per Application Load Balancer
Un ascoltatore è un processo che controlla le richieste di connessione utilizzando il protocollo e la porta configurata. Prima di iniziare a utilizzare l'Application Load Balancer, è necessario aggiungere almeno un ascoltatore. Se il sistema di bilanciamento del carico non ha un ascoltatore, non può ricevere traffico dai client. Le regole che definisci per i tuoi listener determinano il modo in cui il load balancer indirizza le richieste verso le destinazioni registrate, ad esempio le EC2 istanze.
Indice
Configurazione dei listener
I listener supportano i seguenti protocolli e porte:
-
Protocolli: HTTP, HTTPS
-
Porte: 1-65535
È possibile utilizzare un listener HTTPS per deviare il lavoro di crittografia e decrittografia per il sistema di bilanciamento del carico, in modo che le applicazioni possano concentrarsi sulla loro logica di business. Se il listener utilizza un protocollo HTTPS, è necessario distribuire almeno un certificato del server SSL sul listener. Per ulteriori informazioni, consulta Creazione di un ascoltatore HTTPS per Application Load Balancer.
Se devi assicurarti che siano le destinazioni a decrittare il traffico HTTPS al posto del sistema di bilanciamento del carico, è possibile creare un Network Load Balancer con un ascoltatore TCP sulla porta 443. Con un ascoltatore TCP, il sistema di bilanciamento del carico passa il traffico crittografato alle destinazioni senza decrittarlo. Per ulteriori informazioni, consulta la Guida per l'utente dei Network Load Balancer.
Gli Application Load Balancer forniscono supporto nativo per. WebSockets È possibile aggiornare una connessione HTTP/1.1 esistente in una connessione WebSocket (ws
owss
) utilizzando un aggiornamento della connessione HTTP. Quando si esegue l'aggiornamento, la connessione TCP utilizzata per le richieste (al sistema di bilanciamento del carico e alla destinazione) diventa una WebSocket connessione persistente tra il client e la destinazione tramite il sistema di bilanciamento del carico. È possibile utilizzare sia WebSockets i listener HTTP che HTTPS. Le opzioni scelte per il listener si applicano sia alle WebSocket connessioni che al traffico HTTP. Per ulteriori informazioni, consulta How the WebSocket Protocol Works nella Amazon CloudFront Developer Guide.
Gli Application Load Balancer forniscono supporto nativo per HTTP/2 con ascoltatori HTTPS. È possibile inviare fino a 128 richieste in parallelo utilizzando una sola connessione HTTP/2. È possibile utilizzare la versione del protocollo per inviare richieste alle destinazioni utilizzando HTTP/2. Per ulteriori informazioni, consulta Versione del protocollo. Poiché HTTP/2 utilizza connessioni front-end in modo più efficiente, si potrebbe notare un minor numero di connessioni tra i client e il sistema di bilanciamento del carico. Non è possibile usare la funzione server push di HTTP/2.
Per ulteriori informazioni, consulta Routing della richiesta nella Guida per l'utente di Elastic Load Balancing.
Attributi del listener
Di seguito sono riportati gli attributi del listener per Application Load Balancers
routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name
-
Consente di modificare il nome dell'intestazione dell'intestazione della richiesta HTTP X-Amzn-Mtls-ClientCert-Serial-Number.
routing.http.request.x_amzn_mtls_clientcert_issuer.header_name
-
Consente di modificare il nome dell'intestazione dell'intestazione della richiesta HTTP X-Amzn-Mtls-Clientcert-Issuer.
routing.http.request.x_amzn_mtls_clientcert_subject.header_name
-
Consente di modificare il nome dell'intestazione dell'intestazione della richiesta HTTP X-Amzn-Mtls-Clientcert-Sject.
routing.http.request.x_amzn_mtls_clientcert_validity.header_name
-
Consente di modificare il nome dell'intestazione dell'intestazione della richiesta HTTP X-Amzn-Mtls-Clientcert-Validity.
routing.http.request.x_amzn_mtls_clientcert_leaf.header_name
-
Consente di modificare il nome dell'intestazione dell'intestazione della richiesta HTTP X-Amzn-Mtls-Clientcert-Leaf.
routing.http.request.x_amzn_mtls_clientcert.header_name
-
Consente di modificare il nome dell'intestazione dell'intestazione della richiesta HTTP X-Amzn-Mtls-Clientcert.
routing.http.request.x_amzn_tls_version.header_name
-
Consente di modificare il nome dell'intestazione dell'intestazione della richiesta HTTP X-Amzn-Tls-Version.
routing.http.request.x_amzn_tls_cipher_suite.header_name
-
Consente di modificare il nome dell'intestazione dell'intestazione della richiesta HTTP X-Amzn-Tls-Cipher-Suite.
routing.http.response.server.enabled
-
Consente di consentire o rimuovere l'intestazione del server di risposta HTTP.
routing.http.response.strict_transport_security.header_value
-
Informa i browser che è necessario accedere al sito solo tramite HTTPS e che eventuali tentativi futuri di accedervi tramite HTTP devono essere automaticamente convertiti in HTTPS.
routing.http.response.access_control_allow_origin.header_value
-
Speciifica a quali origini è consentito l'accesso al server.
routing.http.response.access_control_allow_methods.header_value
-
Restituisce quali metodi HTTP sono consentiti quando si accede al server da un'origine diversa.
routing.http.response.access_control_allow_headers.header_value
-
Speciifica quali intestazioni possono essere utilizzate durante la richiesta.
routing.http.response.access_control_allow_credentials.header_value
-
Indica se il browser deve includere credenziali come i cookie o l'autenticazione quando effettua le richieste.
routing.http.response.access_control_expose_headers.header_value
-
Restituisce le intestazioni che il browser può esporre al client richiedente.
routing.http.response.access_control_max_age.header_value
-
Specifica per quanto tempo i risultati di una richiesta di preflight possono essere memorizzati nella cache, in secondi.
routing.http.response.content_security_policy.header_value
-
Speciifica le restrizioni applicate dal browser per ridurre al minimo il rischio di determinati tipi di minacce alla sicurezza.
routing.http.response.x_content_type_options.header_value
-
Indica se i tipi MIME pubblicizzati nelle intestazioni Content-Type devono essere seguiti e non modificati.
routing.http.response.x_frame_options.header_value
-
Indica se il browser è autorizzato a eseguire il rendering di una pagina in un frame, iframe, embed o oggetto.
Regole dei listener
Ogni ascoltatore ha un'operazione predefinita, nota anche come regola predefinita. La regola predefinita non può essere eliminata ed è sempre eseguita per ultima. È possibile creare regole aggiuntive e consistono in una priorità, una o più operazioni e una o più condizioni. Puoi aggiungere o modificare le regole in qualsiasi momento. Per ulteriori informazioni, consulta Modificare una regola.
Regole predefinite
Le operazioni per la regola predefinita vengono definite al momento della creazione del listener. Le regole predefinite non possono avere condizioni. Se non viene soddisfatta nessuna condizione per qualsiasi regola del listener, viene eseguita l'operazione per la regola predefinita.
Di seguito è riportato un esempio di una regola predefinita come illustrato nella console:

Priorità regola
Ogni regola ha una priorità. Le regole vengono valutate in base all'ordine di priorità, dal valore più basso a quello più alto. La regola predefinita è valutata per ultima. È possibile modificare la priorità di una regola non predefinita in qualsiasi momento. Non è possibile modificare la priorità della regola di default. Per ulteriori informazioni, consulta Aggiornare la priorità delle regole.
Operazioni delle regole
Ogni operazione della regola dispone di un tipo, di una priorità e delle informazioni necessarie per eseguire l'operazione. Per ulteriori informazioni, consulta Tipi di operazioni delle regole.
Condizioni della regola
Ogni condizione della regola ha informazioni su tipo e configurazione. Quando le condizioni di una regola vengono soddisfatte, l'operazione viene eseguita. Per ulteriori informazioni, consulta Tipi di condizioni della regola.
Tipi di operazioni delle regole
I tipi di operazione supportati per una regola dell'ascoltatore sono i seguenti:
authenticate-cognito
-
[Ascoltatori HTTPS] Utilizzare Amazon Cognito per autenticare gli utenti. Per ulteriori informazioni, consulta Autenticazione degli utenti tramite Application Load Balancer.
authenticate-oidc
-
[Listener HTTPS] Utilizzare un provider di identità compatibile con OpenID Connect (OIDC) per autenticare gli utenti.
fixed-response
-
Restituire una risposta HTTP personalizzata. Per ulteriori informazioni, consulta Operazioni con risposta fissa.
forward
-
Inoltrare le richieste verso il gruppo di destinazioni indicato. Per ulteriori informazioni, consulta Operazioni di inoltro.
redirect
-
Reindirizzare le richieste da un URL a un altro. Per ulteriori informazioni, consulta Operazioni di reindirizzamento.
Viene eseguita per prima l'operazione con priorità minore. Ogni regola deve includere esattamente una delle seguenti operazioni: forward
, redirect
o fixed-response
e deve essere l’ultima operazione da eseguire.
Se la versione del protocollo è gRPC o HTTP/2, le uniche operazioni supportate sono le operazioni forward
.
Operazioni con risposta fissa
È possibile utilizzare le operazioni fixed-response
per archiviare le richieste client e restituire una risposta HTTP personalizzata. È possibile utilizzare questa operazione per inviare un codice di risposta 2XX, 4XX o 5XX e un messaggio opzionale.
Quando viene eseguita un'operazione fixed-response
, l'operazione e l'URL del target di reindirizzamento vengono registrate nei log di accesso. Per ulteriori informazioni, consulta Voci dei log di accesso. Il conteggio delle operazioni fixed-response
avvenute con successo viene segnalato dal parametro HTTP_Fixed_Response_Count
. Per ulteriori informazioni, consulta Parametri di Application Load Balancer.
Esempio di azione a risposta fissa per AWS CLI
Puoi specificare un’operazione quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. Le seguenti operazioni inviano una risposta fissa con il codice di stato specificato e il corpo del messaggio.
[ { "Type": "fixed-response", "FixedResponseConfig": { "StatusCode": "200", "ContentType": "text/plain", "MessageBody": "Hello world" } } ]
Operazioni di inoltro
È possibile utilizzare le operazioni forward
per instradare le richieste a uno o più gruppi di destinazioni. Se si specificano più gruppi di destinazioni per un'operazione forward
, è necessario specificare un peso per ciascun gruppo di destinazioni. Ogni peso del gruppo di destinazioni è un valore compreso tra 0 e 999. Le richieste che corrispondono a una regola del listener con gruppi di destinazioni ponderati vengono distribuite a questi gruppi di destinazioni in base ai rispettivi pesi. Ad esempio, se specifichi due gruppi di destinazioni, ciascuno con un peso di 10, ogni gruppo di destinazioni riceve la metà delle richieste. Se specifichi due gruppi di destinazioni, uno con un peso di 10 e l'altro con un peso di 20, il gruppo di destinazioni con un peso di 20 riceve il doppio delle richieste rispetto all'altro gruppo di destinazioni.
Per impostazione predefinita, la configurazione di una regola per distribuire il traffico tra gruppi di destinazioni ponderati non garantisce che le sticky session vengano rispettate. Per garantire che le sticky session siano rispettate, abilitare la persistenza del gruppo di destinazioni per la regola. Quando il load balancer indirizza per la prima volta una richiesta a un gruppo target ponderato, genera un cookie denominato AWSALBTG che codifica le informazioni sul gruppo target selezionato, crittografa il cookie e include il cookie nella risposta al client. Il client deve includere il cookie ricevuto nelle richieste successive al sistema di bilanciamento del carico. Quando il sistema di bilanciamento del carico riceve una richiesta che corrisponde a una regola con la persistenza del gruppo di destinazioni abilitata e contiene il cookie, la richiesta viene instradata al gruppo di destinazioni specificato nel cookie.
Gli Application Load Balancer non supportano i valori dei cookie codificati con URL.
Con le richieste CORS (cross-origin resource sharing), alcuni browser richiedono a SameSite=None; Secure
di abilitare la stickness. In questo caso, Elastic Load Balancing genera un secondo cookie AWSALBTGCORS, che include le stesse informazioni dello stickiness cookie originale più questo attributo. SameSite
I clienti ricevono entrambi i cookie.
Esempio di operazione di inoltro con un gruppo di destinazioni
Puoi specificare un’operazione quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. La seguente operazione inoltra le richieste al gruppo di destinazioni specificato.
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/my-targets
/73e2d6bc24d8a067
" } ] } } ]
Esempio di operazione di inoltro con due gruppi di destinazioni ponderati
L'operazione seguente inoltra le richieste ai due gruppi di destinazioni specificati, in base al peso di ciascun gruppo di destinazioni.
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/blue-targets
/73e2d6bc24d8a067
", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2
:123456789012
:targetgroup/green-targets
/09966783158cda59
", "Weight": 20 } ] } } ]
Esempio di operazione di inoltro con persistenza abilitata
Se si dispone di un'operazione di inoltro con più gruppi di destinazioni e per uno o più gruppi di destinazioni sono abilitate le sessioni permanenti, è necessario abilitare la persistenza del gruppo di destinazioni.
L'operazione seguente inoltra le richieste ai due gruppi di destinazioni specificati, con la persistenza del gruppo di destinazioni abilitata. Le richieste che non contengono il cookie AWSALBTG vengono instradate in base al peso di ciascun gruppo di destinazioni.
[ { "Type": "forward", "ForwardConfig": { "TargetGroups": [ { "TargetGroupArn": "arn:aws:elasticloadbalancing:
us-west-2
:123456789012
:targetgroup/blue-targets
/73e2d6bc24d8a067
", "Weight": 10 }, { "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2
:123456789012
:targetgroup/green-targets
/09966783158cda59
", "Weight": 20 } ], "TargetGroupStickinessConfig": { "Enabled": true, "DurationSeconds": 1000 } } } ]
Operazioni di reindirizzamento
È possibile utilizzare le operazioni redirect
per reindirizzare le richieste client da un URL a un altro. È possibile configurare i reindirizzamenti come temporanei (HTTP 302) o permanenti (HTTP 301) in base alle esigenze.
Un URI è costituito dai componenti seguenti:
protocol
://hostname
:port
/path
?query
È necessario modificare almeno uno dei componenti seguenti per evitare un reindirizzamento loop: protocollo, nome host, porta o percorso. I componenti che non vengono modificati mantengono i loro valori originali.
- protocol
-
Il protocollo (HTTP o HTTPS). È possibile reindirizzare i protocolli HTTP a HTTP, HTTP a HTTPS e HTTPS a HTTPS. Non è possibile reindirizzare i protocolli HTTPS a HTTP.
- hostname
-
Il nome host. Il nome host non prevede la distinzione tra lettere maiuscole e minuscole, può contenere fino a 128 caratteri di lunghezza e può contenere caratteri alfanumerici, caratteri jolly (* e ?) e trattini (-).
- port
-
La porta (da 1 a 65535).
- path
-
Il percorso assoluto, partendo da "/". Il percorso prevede la distinzione tra lettere maiuscole e minuscole, può contenere fino a 128 caratteri di lunghezza e può contenere caratteri alfanumerici, caratteri jolly (* e ?), & (con &) e i seguenti caratteri speciali: _-.$/~"'@:+
- query
-
I parametri di query La lunghezza massima è 128 caratteri.
È possibile riutilizzare i componenti URI dell'URL originale nell'URL di destinazione utilizzando le seguenti parole chiave riservate:
-
#{protocol}
- Mantiene il protocollo. Utilizzare nel protocollo e nei componenti query. -
#{host}
- Mantiene il dominio. Utilizzare nel nome host, nel percorso e nei componenti query. -
#{port}
- Mantiene la porta. Utilizzare nella porta, nel percorso e nei componenti query. -
#{path}
- Mantiene il percorso. Utilizzare nel percorso e nei componenti query. -
#{query}
- Mantiene i parametri di query. Utilizzare nel componente query.
Quando viene eseguita un'operazione redirect
, l'operazione viene registrata nei log di accesso. Per ulteriori informazioni, consulta Voci dei log di accesso. Il conteggio delle operazioni redirect
avvenute con successo viene segnalato dal parametro HTTP_Redirect_Count
. Per ulteriori informazioni, consulta Parametri di Application Load Balancer.
Esempio di operazioni di reindirizzamento tramite la console
Ad esempio, la regola seguente consente di configurare un reindirizzamento permanente a un URL che usa il protocollo HTTPS e la porta specificata (40443), ma mantiene il nome host, il percorso e i parametri di query originali. Questa schermata è equivalente a "https://#{host}:40443/#{path}?#{query}".

La regola seguente consente di configurare un reindirizzamento permanente a un URL che mantiene il protocollo, la porta, il nome host e i parametri di query originali e utilizza la parola chiave #{path}
per creare un percorso modificato. Questa schermata è equivalente a "#{protocol}://#{host}:#{port}/new/#{path}?#{query}".

Esempio di azione di reindirizzamento per AWS CLI
Puoi specificare un’operazione quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. La seguente azione reindirizza una richiesta HTTP a una richiesta HTTP sulla porta 443, con lo stesso nome host, percorso e stringa di query della richiesta HTTOP:
[ { "Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Path": "/#{path}", "Query": "#{query}", "StatusCode": "HTTP_301" } } ]
Tipi di condizioni della regola
I tipi di operazione supportati per una regola sono i seguenti:
host-header
-
Instradamento basato sul nome host di ogni richiesta. Per ulteriori informazioni, consulta Condizioni host.
http-header
-
Instradamento basato sulle intestazioni HTTP per ogni richiesta. Per ulteriori informazioni, consulta Condizioni nell'intestazione HTTP.
http-request-method
-
Instradamento basato sul metodo della richiesta HTTP di ogni richiesta. Per ulteriori informazioni, consulta Condizioni del metodo di richiesta HTTP.
path-pattern
-
Percorso basato sui modelli di percorso indicati nella richiesta URLs. Per ulteriori informazioni, consulta Condizioni percorso.
query-string
-
Instradamento basato su coppie chiave/valore nelle stringhe di query. Per ulteriori informazioni, consulta Condizioni delle stringhe di query.
source-ip
-
Instradamento basato sull’indirizzo IP di origine di ogni richiesta. Per ulteriori informazioni, consulta Condizioni indirizzo IP di origine.
Ogni regola può facoltativamente includere al massimo una delle seguenti condizioni: host-header
, http-request-method
, path-pattern
e source-ip
. Ogni regola può anche includere facoltativamente una o più delle seguenti condizioni: http-header
e query-string
.
Puoi specificare fino a tre valutazioni di corrispondenze per condizione. Ad esempio, per ogni condizione http-header
è possibile specificare fino a tre stringhe da paragonare al valore dell’intestazione HTTP nella richiesta. La condizione è soddisfatta se una delle stringhe corrisponde al valore dell’intestazione HTTP. Per fare in modo che tutte le stringhe siano una corrispondenza, crea una condizione per valutazione di corrispondenza.
Puoi specificare fino a cinque valutazioni di corrispondenze per regola. Ad esempio, puoi creare una regola con cinque condizioni in cui ogni condizione ha una valutazione di corrispondenza.
Nelel valutazioni di corripondenza è possibile includere caratteri jolly per le condizioni http-header
,host-header
, path-pattern
e query-string
. Esiste un limite di cinque caratteri jolly per regola.
Le regole vengono applicate solo ai caratteri ASCII visibili; i caratteri di controllo (da 0x00 a 0x1f e 0x7f) sono esclusi.
Per le demo, consulta Instradamento avanzato delle richieste
Condizioni nell'intestazione HTTP
Puoi usare le condizioni dell’intestazione HTTP per configurare le regole che instradano le richieste in base alle intestazioni HTTP per la richiesta. Puoi specificare i nomi dei campi delle intestazioni HTTP standard o personalizzate. Il nome dell'intestazione e la valutazione della corrispondenza non fanno distinzione tra lettere maiuscole e minuscole. I seguenti caratteri jolly sono supportati nelle stringhe di confronto: * (corrisponde a 0 o a più caratteri) e ? (corrisponde esattamente a 1 carattere). I caratteri jolly non sono supportati nel nome dell’intestazione.
Esempio di condizione di intestazione HTTP per AWS CLI
Puoi specificare le condizioni quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. La seguente condizione è soddisfatta dalle richieste con un’intestazione Utente-Agente che corrisponde a una delle stringhe specificate.
[ { "Field": "http-header", "HttpHeaderConfig": { "HttpHeaderName": "User-Agent", "Values": ["*Chrome*", "*Safari*"] } } ]
Condizioni del metodo di richiesta HTTP
Puoi usare le condizioni del metodo di richiesta HTTP per configurare le regole che instradano le richieste in base al metodo di richiesta HTTP della richiesta. Puoi specificare metodi HTTP standard o personalizzati. La valutazione della corrispondenza prevede la distinzione tra lettere maiuscole e minuscole. I caratteri jolly non sono supportati; pertanto, il nome del metodo deve essere una corrispondenza esatta.
Consigliamo di instradare le richieste GET e HEAD nello stesso modo, perché la risposta alla richiesta HEAD può essere inserita nella cache.
Esempio di condizione del metodo HTTP per AWS CLI
Puoi specificare le condizioni quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. La condizione seguente è soddisfatta dalle richieste che utilizzano il metodo specificato.
[ { "Field": "http-request-method", "HttpRequestMethodConfig": { "Values": ["CUSTOM-METHOD"] } } ]
Condizioni host
È possibile utilizzare le condizioni host per definire regole in grado di inoltrare le richieste in base al nome host nell'intestazione host (noto anche come instradamento basato su host). In questo modo è possibile supportare più sottodomini e domini di primo livello diversi utilizzando un singolo sistema di bilanciamento del carico.
Un nome host non distingue tra maiuscole e minuscole, può avere una lunghezza massima di 128 caratteri e contenere qualsiasi carattere tra i seguenti:
-
A-Z, a-z, 0-9
-
- .
-
* (corrisponde a 0 o più caratteri)
-
? (corrisponde esattamente a 1 carattere)
Si deve includere il carattere "." almeno una volta. Dopo l'ultimo carattere "." è possibile includere solo caratteri alfabetici.
Esempio di nomi host
-
example.com
-
test.example.com
-
*.example.com
La regola *.example.com
si applica a test.example.com
ma non a example.com
.
Esempio di condizione di intestazione dell'host per AWS CLI
Puoi specificare le condizioni quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. La seguente condizione è soddisfatta dalle richieste con un’intestazione host che corrisponde alla stringa specificata.
[ { "Field": "host-header", "HostHeaderConfig": { "Values": ["*.example.com"] } } ]
Condizioni percorso
È possibile utilizzare le condizioni percorso per definire regole in grado di inoltrare le richieste in base all'URL nella richiesta (noto anche come instradamento basato su host).
Il modello di percorso viene applicato solo al percorso dell'URL, non ai suoi parametri di query. Viene applicato solo ai caratteri ASCII visibili; i caratteri di controllo (da 0x00 a 0x1f e 0x7f) sono esclusi.
La valutazione della regola viene eseguita solo dopo la normalizzazione dell'URI.
Un modello di percorso non distingue tra maiuscole e minuscole, può avere una lunghezza massima di 128 caratteri e contenere qualsiasi carattere tra i seguenti.
-
A-Z, a-z, 0-9
-
_ - . $ / ~ " ' @ : +
-
& (utilizzo di &)
-
* (corrisponde a 0 o più caratteri)
-
? (corrisponde esattamente a 1 carattere)
Se la versione del protocollo è gRPC, le condizioni possono essere specifiche per un pacchetto, un servizio o un metodo.
Esempio di modelli di percorso HTTP
-
/img/*
-
/img/*/pics
Esempio di modelli di percorso gRPC
-
/package
-
/package.service
-
/package.service/method
Il modello di percorso viene utilizzato per instradare le richieste, ma non le modifica. Ad esempio, se una regola ha un modello di percorso /img/*
, la regola inoltra una richiesta per /img/picture.jpg
al gruppo target specificato come una richiesta per /img/picture.jpg
.
Esempio di condizione del modello di percorso per AWS CLI
Puoi specificare le condizioni quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. La seguente condizione è soddisfatta dalle richieste con un URL che contiene la stringa specificata.
[ { "Field": "path-pattern", "PathPatternConfig": { "Values": ["/img/*"] } } ]
Condizioni delle stringhe di query
Puoi usare le condizioni delle stringhe di query per configurare le regole che instradano le richeste in base alle coppie chiave/valore o i valori nella stringa di query. La valutazione della corrispondenza non prevede la distinzione tra lettere maiuscole e minuscole. I seguenti caratteri jolly sono supportati: * (corrisponde a 0 o a più caratteri) e ? (corrisponde esattamente a 1 carattere).
Esempio di condizione della stringa di query per AWS CLI
Puoi specificare le condizioni quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. La seguente condizione è soddisfatta dalle richieste con una stringa di query che include una coppia chiave/valore di "version=v1" o un set di chiavi impostato su “example”.
[ { "Field": "query-string", "QueryStringConfig": { "Values": [ { "Key": "version", "Value": "v1" }, { "Value": "*example*" } ] } } ]
Condizioni indirizzo IP di origine
Puoi usare le condizioni dell’indirizzo IP di origine per configurare le regole che instradano le richieste in base all’indirizzo IP di origine della richiesta. L’indirizzo IP deve essere in formato CIDR. È possibile utilizzare entrambi IPv4 gli IPv6 indirizzi. I caratteri jolly non sono supportati. Non è possibile specificare il CIDR 255.255.255.255/32
come condizione della regola dell'IP di origine.
Se un client è al di là di un proxy, si tratta dell'indirizzo IP del proxy, non dell'indirizzo IP del client.
Questa condizione non è soddisfatta dagli indirizzi nell' X-Forwarded-Forintestazione. Per cercare gli indirizzi nell' X-Forwarded-Forintestazione, utilizza una http-header
condizione.
Esempio di condizione IP di origine per AWS CLI
Puoi specificare le condizioni quando crei o modifichi una regola. Per ulteriori informazioni consulta i comandi create-rule e modify-rule. La seguente condizione è soddisfatta dalle richieste con un indirizzo IP di origine in uno dei blocchi CIDR specificati.
[ { "Field": "source-ip", "SourceIpConfig": { "Values": ["192.0.2.0/24", "198.51.100.10/32"] } } ]
Intestazioni HTTP e Application Load Balancer
Le richieste e le risposte HTTP utilizzano i campi intestazione per inviare informazioni sui messaggi HTTP. Le intestazioni HTTP vengono aggiunte automaticamente. I campi intestazione sono costituti da coppie nome-valore separati da due punti e intervallati da un ritorno a capo e un avanzamento riga. Un insieme standard di campi dell'intestazione HTTP è definito nella RFC 2616 intestazioni di messaggiX-Forwarded
. Gli Application Load Balancer supportano le seguenti intestazioni X-Forwarded
.
Per ulteriori informazioni sulle connessioni HTTP, consulta Routing della richiesta nella Guida per l'utente di Elastic Load Balancing.
Intestazioni X-Forwarded
X-Forwarded-For
L'intestazione della richiesta X-Forwarded-For
consente di identificare l'indirizzo IP di un client quando utilizzi un sistema di bilanciamento del carico HTTP o HTTPS. Poiché i sistemi di bilanciamento del carico intercettano il traffico tra client e server, i log di accesso al server contengono solo l'indirizzo IP del sistema di bilanciamento del carico. Per visualizzare l'indirizzo IP del client, utilizza l'attributo routing.http.xff_header_processing.mode
. Questo attributo consente di modificare, mantenere o rimuovere l'intestazione X-Forwarded-For
nella richiesta HTTP prima che Application Load Balancer la invii alla destinazione. I valori possibili per questo attributo sono append
, preserve
e remove
. Il valore predefinito per questo attributo è append
.
Importante
L'X-Forwarded-For
intestazione deve essere utilizzata con cautela a causa dei potenziali rischi per la sicurezza. Le voci possono essere considerate affidabili solo se aggiunte da sistemi adeguatamente protetti all'interno della rete.
Append
Per impostazione predefinita, Application Load Balancer memorizza l'indirizzo IP del client nell'intestazione della richiesta X-Forwarded-For
e passa l'intestazione al server. Se l'intestazione della richiesta X-Forwarded-For
non è inclusa nella richiesta originale, il sistema di bilanciamento del carico ne crea una con l'indirizzo IP del client come valore della richiesta. In caso contrario, il load balancer aggiunge l'indirizzo IP del client all'intestazione esistente e quindi passa l'intestazione al server. L'intestazione della richiesta X-Forwarded-For
può contenere più indirizzi IP separati da virgole.
L'intestazione della richiesta X-Forwarded-For
assume la seguente forma:
X-Forwarded-For: client-ip-address
Di seguito è riportata un'intestazione della richiesta X-Forwarded-For
di esempio per un client con l'indirizzo IP 203.0.113.7
.
X-Forwarded-For: 203.0.113.7
Di seguito è riportato un esempio di intestazione di X-Forwarded-For
richiesta per un client con un indirizzo di. IPv6 2001:DB8::21f:5bff:febf:ce22:8a2e
X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e
Quando l'attributo di conservazione della porta del client (routing.http.xff_client_port.enabled
) è abilitato nel sistema di bilanciamento del carico, l'intestazione della richiesta X-Forwarded-For
include il client-port-number
aggiunto al client-ip-address
, separato da due punti. L'intestazione assume così la seguente forma:
IPv4 -- X-Forwarded-For: client-ip-address
:client-port-number
IPv6 -- X-Forwarded-For: [client-ip-address]
:client-port-number
Si noti IPv6 infatti che quando il sistema di bilanciamento del carico aggiunge il client-ip-address
all'intestazione esistente, racchiude l'indirizzo tra parentesi quadre.
Di seguito è riportato un esempio di intestazione di X-Forwarded-For
richiesta per un client con un IPv4 indirizzo e un numero di porta di. 12.34.56.78
8080
X-Forwarded-For: 12.34.56.78:8080
Di seguito è riportato un esempio di intestazione di X-Forwarded-For
richiesta per un client con un IPv6 indirizzo 2001:db8:85a3:8d3:1319:8a2e:370:7348
e un numero di porta di. 8080
X-Forwarded-For: [2001:db8:85a3:8d3:1319:8a2e:370:7348]:8080
Preserve
La modalità preserve
nell'attributo garantisce che l'intestazione X-Forwarded-For
nella richiesta HTTP non venga modificato in alcun modo prima di essere inviata alle destinazioni.
Rimuovi
La modalità remove
nell'attributo rimuove l'intestazione X-Forwarded-For
nella richiesta HTTP prima di inviarla alle destinazioni.
Nota
Se si abilita l'attributo di conservazione della porta del client (routing.http.xff_client_port.enabled
) e inoltre si seleziona preserve
o remove
per l'attributo routing.http.xff_header_processing.mode
, l'Application Load Balancer sovrascrive l'attributo di conservazione della porta del client. Mantiene l'intestazione X-Forwarded-For
invariata o la rimuove, a seconda della modalità selezionata, prima di inviarla alle destinazioni.
La tabella seguente mostra esempi dell'intestazione X-Forwarded-For
che la destinazione riceve quando si seleziona la modalità append
, preserve
o remove
. In questo esempio, l'indirizzo IP dell'ultimo hop è 127.0.0.1
.
Descrizione della richiesta |
Richiesta di esempio |
XFF con modalità append |
XFF con modalità preserve |
XFF con modalità remove |
---|---|---|---|---|
La richiesta viene inviata senza intestazione XFF | GET /index.html HTTP/1.1 Host: example.com |
X-Forwarded-For: 127.0.0.1 |
Non presente | Non presente |
La richiesta viene inviata con un'intestazione XFF e un indirizzo IP client. | GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For:
127.0.0.4 |
X-Forwarded-For: 127.0.0.4, 127.0.0.1 |
X-Forwarded-For: 127.0.0.4 |
Non presente |
La richiesta viene inviata con un'intestazione XFF con più indirizzi IP client. | GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For:
127.0.0.4, 127.0.0.8 |
X-Forwarded-For: 127.0.0.4, 127.0.0.8,
127.0.0.1 |
X-Forwarded-For: 127.0.0.4, 127.0.0.8 |
Non presente |
Per modificare, conservare o rimuovere X-Forwarded-For header utilizzando la console
Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/
. -
Seleziona Sistemi di bilanciamento del carico nel riquadro di navigazione.
-
Selezionare il load balancer.
-
Nella scheda Attributi, scegli Modifica.
-
Nella sezione Configurazione del traffico, in Gestione dei pacchetti, per l'X-Forwarded-For intestazione scegli Aggiungi (impostazione predefinita), Conserva o Rimuovi.
-
Scegli Save changes (Salva modifiche).
Per modificare, conservare o rimuovere il X-Forwarded-For intestazione utilizzando il AWS CLI
Usa il modify-load-balancer-attributescomando con l'routing.http.xff_header_processing.mode
attributo.
X-Forwarded-Proto
L'intestazione della richiesta X-Forwarded-Proto
consente di identificare il protocollo (HTTP o HTTPS) utilizzato da un client per connettersi al tuo load balancer. I log di accesso al server contengono solo il protocollo utilizzato tra il server e il load balancer; non contengono informazioni sul protocollo utilizzato tra il client e il load balancer. Per determinare il protocollo utilizzato tra il client e il load balancer, utilizzare l'intestazione della richiesta X-Forwarded-Proto
. Elastic Load Balancing archivia il protocollo utilizzato tra il client e il load balancer nell'intestazione della richiesta X-Forwarded-Proto
e passa l'intestazione al server.
La tua applicazione o il tuo sito Web può utilizzare il protocollo memorizzato nell'intestazione della richiesta X-Forwarded-Proto
per eseguire il rendering di una risposta che reindirizza all'URL appropriato.
L'intestazione della richiesta X-Forwarded-Proto
assume la seguente forma:
X-Forwarded-Proto: originatingProtocol
L'esempio seguente contiene un'intestazione della richiesta X-Forwarded-Proto
per una richiesta originata dal client come richiesta HTTPS:
X-Forwarded-Proto: https
X-Forwarded-Port
L'intestazione della richiesta X-Forwarded-Port
consente di identificare la porta di destinazione utilizzata dal client per connettersi al load balancer.