Intestazioni HTTP e Application Load Balancer - Sistema di bilanciamento del carico elastico

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

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 messaggi. Sono anche disponibili intestazioni HTTP non standard che vengono aggiunte automaticamente e sono ampiamente utilizzate dalle applicazioni. Alcune delle intestazioni HTTP non standard hanno un prefisso X-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.

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-Forintestazione 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 è riportata un'intestazione della richiesta X-Forwarded-For di esempio per un client con l'indirizzo 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

Per IPv6, notare che quando il sistema di bilanciamento del carico aggiunge il client-ip-address all'intestazione esistente, racchiude l'indirizzo tra parentesi quadre.

Di seguito è riportata un'intestazione della richiesta X-Forwarded-For di esempio per un client con l'indirizzo IPv4 12.34.56.78 e il numero di porta 8080.

X-Forwarded-For: 12.34.56.78:8080

Di seguito è riportata un'intestazione della richiesta X-Forwarded-For di esempio per un client con l'indirizzo IPv6 2001:db8:85a3:8d3:1319:8a2e:370:7348 e il numero di porta 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 l'intestazione X-Forwarded-For tramite la console
  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Seleziona Sistemi di bilanciamento del carico nel riquadro di navigazione.

  3. Selezionare il load balancer.

  4. Nella scheda Attributi, scegli Modifica.

  5. Nella sezione Configurazione del traffico, in Gestione dei pacchetti, per Intestazione X-Forwarded-For scegliere Append (impostazione predefinita), Preserve o Remove.

  6. Seleziona Salvataggio delle modifiche.

Per modificare, conservare o rimuovere l'intestazione utilizzando il X-Forwarded-ForAWS CLI

Utilizzate il modify-load-balancer-attributescomando con l'routing.http.xff_header_processing.modeattributo.

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.