

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

# Modifica gli attributi per il tuo Application Load Balancer
<a name="edit-load-balancer-attributes"></a>

Dopo aver creato un Application Load Balancer, è possibile modificarne gli attributi.

**Topics**
+ [Timeout di inattività della connessione](#connection-idle-timeout)
+ [durata keepalive del client HTTP](#http-client-keep-alive-duration)
+ [Protezione da eliminazione](#deletion-protection)
+ [Modalità di mitigazione della desincronizzazione](#desync-mitigation-mode)
+ [Conservazione dell'intestazione host](#host-header-preservation)

## Timeout di inattività della connessione
<a name="connection-idle-timeout"></a>

Il timeout di inattività della connessione è il periodo di tempo in cui una connessione client o di destinazione esistente può rimanere inattiva, senza inviare o ricevere dati, prima che il load balancer chiuda la connessione.

Per garantire che operazioni lunghe come il caricamento di file abbiano il tempo di completare, invia almeno 1 byte di dati prima della scadenza di ogni periodo di timeout di inattività e aumenta la durata del periodo di inattività in base alle esigenze. Ti consigliamo inoltre di configurare il timeout di inattività dell'applicazione in modo che sia superiore al timeout di inattività configurato per il sistema di bilanciamento del carico. In caso contrario, se l'applicazione chiude la connessione TCP al sistema di bilanciamento del carico in modo drastico, il sistema di bilanciamento del carico potrebbe inviare una richiesta all'applicazione prima di ricevere il pacchetto che indica che la connessione è chiusa. In tal caso, il sistema di bilanciamento del carico invia un errore HTTP 502 Gateway non valido al client.

Gli Application Load Balancer non supportano i frame PING HTTP/2. Questi non ripristinano il timeout di inattività della connessione.

Per impostazione predefinita, Elastic Load Balancing imposta il valore del tempo di inattività per il sistema di bilanciamento del carico su 60 secondi.

------
#### [ Console ]

**Per aggiornare il valore del timeout di inattività della connessione**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Seleziona **Sistemi di bilanciamento del carico** nel riquadro di navigazione.

1. Selezionare il load balancer.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. In **Configurazione del traffico**, inserisci un valore per il timeout di **inattività della connessione**. L'intervallo valido è compreso tra 1 e 4000 secondi.

1. Scegli **Save changes** (Salva modifiche).

------
#### [ AWS CLI ]

**Per aggiornare il valore di timeout di inattività della connessione**  
Utilizza il comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con l’attributo `idle_timeout.timeout_seconds`. L'intervallo valido è compreso tra 1 e 4000 secondi.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=idle_timeout.timeout_seconds,Value=120"
```

------
#### [ CloudFormation ]

**Per aggiornare il valore di timeout di inattività della connessione**  
Aggiorna la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)risorsa per includere l'`idle_timeout.timeout_seconds`attributo. L'intervallo valido è compreso tra 1 e 4000 secondi.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "idle_timeout.timeout_seconds"
          Value: "120"
```

------

## durata keepalive del client HTTP
<a name="http-client-keep-alive-duration"></a>

La durata keepalive del client HTTP è il periodo di tempo massimo durante il quale un Application Load Balancer mantiene una connessione HTTP persistente a un client. Trascorsa la durata di keepalive del client HTTP configurato, l'Application Load Balancer accetta un'altra richiesta e quindi restituisce una risposta che chiude correttamente la connessione.

Il tipo di risposta inviata dal load balancer dipende dalla versione HTTP utilizzata dalla connessione client.
+ Per i client connessi tramite HTTP 1.x, il load balancer invia un'intestazione HTTP contenente il campo. `Connection: close`
+ Per i client connessi tramite HTTP/2, il load balancer invia un frame. `GOAWAY`

Per impostazione predefinita, Application Load Balancer imposta il valore di durata keepalive del client HTTP per i sistemi di bilanciamento del carico su 3600 secondi o 1 ora. La durata keepalive del client HTTP non può essere disattivata o impostata al di sotto del minimo di 60 secondi, ma è possibile aumentare la durata di keepalive del client HTTP, fino a un massimo di 604800 secondi o 7 giorni. Un Application Load Balancer inizia il periodo di durata keepalive del client HTTP quando viene inizialmente stabilita una connessione HTTP a un client. Il periodo di durata continua quando non c'è traffico e non viene ripristinato finché non viene stabilita una nuova connessione.

Quando il traffico del sistema di bilanciamento del carico viene spostato da una zona di disponibilità ridotta utilizzando lo spostamento zonale o lo spostamento automatico di zona, i client con connessioni aperte esistenti potrebbero continuare a effettuare richieste verso la posizione compromessa fino alla riconnessione dei client. Per supportare un ripristino più rapido, prendi in considerazione l'impostazione di un valore di durata keepalive inferiore, per limitare il tempo in cui i client rimangono connessi a un sistema di bilanciamento del carico. Per ulteriori informazioni, consulta [Limita il tempo in cui i client rimangono connessi ai tuoi endpoint](https://docs.aws.amazon.com/r53recovery/latest/dg/route53-arc-best-practices.zonal-shifts.html#arc-zonal-shift.existing-connections) nella *Amazon Application Recovery Controller (ARC) Developer Guide*.

**Nota**  
Quando il load balancer cambia il tipo di indirizzo IP dell'Application `dualstack-without-public-ipv4` Load Balancer su, il load balancer attende il completamento di tutte le connessioni attive. Per ridurre il tempo necessario per cambiare il tipo di indirizzo IP per il tuo Application Load Balancer, valuta la possibilità di ridurre la durata di keepalive del client HTTP.

L'Application Load Balancer assegna al client HTTP il valore di durata keepalive durante la connessione iniziale. Quando si aggiorna la durata keepalive del client HTTP, ciò può comportare connessioni simultanee con valori di durata keepalive del client HTTP diversi. Le connessioni esistenti mantengono il valore di durata keepalive del client HTTP applicato durante la connessione iniziale. Le nuove connessioni ricevono il valore di durata keepalive del client HTTP aggiornato.

------
#### [ Console ]

**Per aggiornare la durata di keepalive del client**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Seleziona **Sistemi di bilanciamento del carico** nel riquadro di navigazione.

1. Selezionare il load balancer.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. In **Configurazione del traffico**, inserisci un valore per la durata di **keepalive del client HTTP**. L'intervallo valido è compreso tra 60 e 604800 secondi.

1. Scegli **Save changes** (Salva modifiche).

------
#### [ AWS CLI ]

**Per aggiornare la durata del client, keepalive**  
Utilizza il comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con l’attributo `client_keep_alive.seconds`. L'intervallo valido è compreso tra 60 e 604800 secondi.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=client_keep_alive.seconds,Value=7200"
```

------
#### [ CloudFormation ]

**Per aggiornare la durata del client, keepalive**  
Aggiorna la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)risorsa per includere l'`client_keep_alive.seconds`attributo. L'intervallo valido è compreso tra 60 e 604800 secondi.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "client_keep_alive.seconds"
          Value: "7200"
```

------

## Protezione da eliminazione
<a name="deletion-protection"></a>

Per evitare che il sistema di bilanciamento del carico venga eliminato accidentalmente, è possibile abilitare la protezione da eliminazione. Per impostazione predefinita, la protezione da eliminazioni è disabilitata nel sistema di bilanciamento del carico.

Se abiliti la protezione da eliminazione per il sistema di bilanciamento del carico, devi disabilitarla prima di poter eliminare il sistema.

------
#### [ Console ]

**Per abilitare o disabilitare la protezione da eliminazione**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Seleziona **Sistemi di bilanciamento del carico** nel riquadro di navigazione.

1. Selezionare il load balancer.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. In **Protezione**, abilita o disabilita la **protezione da eliminazione**.

1. Scegli **Save changes** (Salva modifiche).

------
#### [ AWS CLI ]

**Per abilitare o disabilitare la protezione da eliminazione**  
Utilizza il comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con l’attributo `deletion_protection.enabled`.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=deletion_protection.enabled,Value=true"
```

------
#### [ CloudFormation ]

**Per abilitare o disabilitare la protezione da eliminazione**  
Aggiorna la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)risorsa per includere l'`deletion_protection.enabled`attributo.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "deletion_protection.enabled"
          Value: "true"
```

------

## Modalità di mitigazione della desincronizzazione
<a name="desync-mitigation-mode"></a>

La modalità di attenuazione della desincronizzazione protegge l'applicazione da problemi dovuti alla desincronizzazione HTTP. Il load balancer classifica ogni richiesta in base al relativo livello di minaccia, consente le richieste sicure e quindi riduce i rischi come specificato dalla modalità di attenuazione specificata. Le modalità di attenuazione della desincronizzazione sono monitorate, difensive e più rigorose. L'impostazione predefinita è la modalità difensiva, che fornisce un'attenuazione duratura contro la desincronizzazione HTTP mantenendo la disponibilità dell'applicazione. È possibile passare alla modalità più rigorosa per garantire che l'applicazione riceva solo richieste conformi a [RFC 7230](https://tools.ietf.org/html/rfc7230).

La libreria http\$1desync\$1guardian analizza le richieste HTTP per prevenire gli attacchi di desincronizzazione HTTP. Per ulteriori informazioni, vedere [HTTP Desync Guardian](https://github.com/aws/http-desync-guardian) on GitHub.

**Classificazioni**

Le classificazioni sono le seguenti:
+ Conformità: la richiesta è conforme a RFC 7230 e non presenta minacce per la sicurezza note.
+ Accettabile: la richiesta non è conforme a RFC 7230 ma non presenta minacce per la sicurezza note.
+ Ambigua: la richiesta non è conforme a RFC 7230 ma rappresenta un rischio, poiché vari server web e proxy potrebbero gestirla in modo diverso.
+ Grave: la richiesta comporta un elevato rischio per la sicurezza. Il load balancer blocca la richiesta, fornisce una risposta 400 al client e chiude la connessione client.

Se una richiesta non è conforme a RFC 7230, il bilanciamento del carico incrementa il parametro `DesyncMitigationMode_NonCompliant_Request_Count`. Per ulteriori informazioni, consulta [Parametri di Application Load Balancer](load-balancer-cloudwatch-metrics.md#load-balancer-metrics-alb).

La classificazione di ogni richiesta è inclusa nei log di accesso del sistema di bilanciamento del carico. Se la richiesta non è conforme, i log di accesso includono un codice del motivo della classificazione. Per ulteriori informazioni, consulta [Motivi della classificazione](load-balancer-access-logs.md#classification-reasons).

**Modalità**  
La tabella seguente descrive come gli Application Load Balancer trattano le richieste in base alla modalità e alla classificazione.


| Classificazione | Modalità monitorata | Modalità difensiva | Modalità più rigorosa | 
| --- | --- | --- | --- | 
| Conforme | Consentito | Consentito | Consentito | 
| Accettabile | Consentito | Consentito | Bloccato | 
| Ambiguo | Consentito | Consentito¹ | Bloccato | 
| Grave | Consentito | Bloccato | Bloccato | 

¹ Esegue il routing delle richieste ma chiude le connessioni client e target. È possibile incorrere in costi aggiuntivi se il sistema di bilanciamento del carico riceve un gran numero di richieste ambigue in modalità difensiva. Questo si verifica perché il numero crescente di nuove connessioni al secondo contribuisce al numero di unità di capacità del sistema di bilanciamento del carico (LCU) utilizzate all'ora. È possibile utilizzare il parametro `NewConnectionCount` per confrontare come il sistema di bilanciamento del carico stabilisce nuove connessioni in modalità monitoraggio e in modalità difensiva.

------
#### [ Console ]

**Per aggiornare la modalità di mitigazione della desincronizzazione**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Seleziona **Sistemi di bilanciamento del carico** nel riquadro di navigazione.

1. Selezionare il load balancer.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. ****In **Configurazione del traffico**, **Gestione dei pacchetti**, per la **modalità di mitigazione Desync**, scegli **Defensive**, Strictest o Monitor.****

1. Scegli **Save changes** (Salva modifiche).

------
#### [ AWS CLI ]

**Per aggiornare la modalità di mitigazione della desincronizzazione**  
Utilizza il comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con l’attributo `routing.http.desync_mitigation_mode`. I valori possibili sono `monitor`, `defensive` o `strictest`. Il valore predefinito è `defensive`.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=routing.http.desync_mitigation_mode,Value=monitor"
```

------
#### [ CloudFormation ]

**Per aggiornare la modalità di mitigazione della desincronizzazione**  
Aggiorna la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)risorsa per includere l'`routing.http.desync_mitigation_mode`attributo. I valori possibili sono `monitor`, `defensive` o `strictest`. Il valore predefinito è `defensive`.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "routing.http.desync_mitigation_mode"
          Value: "monitor"
```

------

## Conservazione dell'intestazione host
<a name="host-header-preservation"></a>

Quando si abilita l'attributo **Conservazione dell'intestazione host**, l'Application Load Balancer conserva l'intestazione `Host` nella richiesta HTTP e invia l'intestazione alle destinazioni senza alcuna modifica. Se l'Application Load Balancer riceve più intestazioni `Host`, le conserva tutte. Le regole dell'ascoltatore vengono applicate solo alla prima intestazione `Host` ricevuta.

Per impostazione predefinita, quando l'attributo **Conservazione dell'intestazione host** non è abilitato, l'Application Load Balancer modifica l'intestazione `Host` nel modo seguente: 

**Quando la conservazione dell'intestazione host non è abilitata e la porta dell'ascoltatore è una porta non predefinita**: quando non si utilizzano le porte predefinite (80 o 443), il numero della porta viene aggiunto all'intestazione host se non è già aggiunto dal client. Ad esempio, l'intestazione `Host` nella richiesta HTTP con `Host: www.example.com`, sarebbe modificata in `Host: www.example.com:8080` se la porta dell'ascoltatore fosse una porta non predefinita come `8080`. 

**Quando la conservazione dell'intestazione host non è abilitata e la porta dell'ascoltatore è una porta predefinita (80 o 443)**: per le porte dell'ascoltatore predefinite (80 o 443), il numero della porta non viene aggiunto all'intestazione host in uscita. Qualsiasi numero di porta già presente nell'intestazione host viene rimosso. 

La tabella seguente illustra ulteriori esempi di come Application Load Balancer tratta le intestazioni host nella richiesta HTTP basata sulla porta dell'ascoltatore.


| Porta dell'ascoltatore | Richiesta di esempio | Intestazione host nella richiesta | Conservazione dell'intestazione host disabilitata (comportamento predefinito) | Conservazione dell'intestazione host abilitata | 
| --- | --- | --- | --- | --- | 
| La richiesta viene inviata sul HTTP/HTTPS listener predefinito. | GET /index.html HTTP/1.1 Host: example.com | example.com | example.com | example.com | 
| La richiesta viene inviata sul listener HTTP predefinito e l'intestazione dell'host ha una porta (ad esempio, 80 o 443). | GET /index.html HTTP/1.1 Host: example.com:80 | example.com:80 | example.com | example.com:80 | 
| La richiesta ha un percorso assoluto. | GET https://dns\$1name/index.html HTTP/1.1 Host: example.com | example.com | dns\$1name | example.com | 
| La richiesta viene inviata su una porta listener non predefinita (ad esempio 8080) | GET /index.html HTTP/1.1 Host: example.com | example.com | example.com:8080 | example.com | 
| La richiesta viene inviata su una porta dell'ascoltatore non predefinita e l'intestazione host ha una porta (ad esempio, 8080). | GET /index.html HTTP/1.1 Host: example.com:8080 | example.com:8080 | example.com:8080 | example.com:8080 | 

------
#### [ Console ]

**Per abilitare la conservazione dell'intestazione host**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Selezionare **Sistemi di bilanciamento del carico** nel riquadro di navigazione.

1. Selezionare il load balancer.

1. Nella scheda **Attributi**, scegli **Modifica**.

1. In **Gestione pacchetti**, attivare **Conserva intestazione host**.

1. Scegli **Save changes** (Salva modifiche).

------
#### [ AWS CLI ]

**Per abilitare la conservazione dell'intestazione host**  
Utilizzate il [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html)comando con l'`routing.http.preserve_host_header.enabled`attributo impostato su. `true`

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=routing.http.preserve_host_header.enabled,Value=true"
```

------
#### [ CloudFormation ]

**Per abilitare la conservazione dell'intestazione host**  
Aggiorna la [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)risorsa per includere l'`routing.http.preserve_host_header.enabled`attributo.

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "routing.http.preserve_host_header.enabled"
          Value: "true"
```

------