Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Come posso reindirizzare il traffico da HTTP a HTTPS sul mio ELB Classic Load Balancer?
Sul mio Classic Load Balancer Elastic Load Balancing (ELB) utilizzo listener HTTP e HTTPS. Il mio Classic Load Balancer esegue l'offloading di SSL e la connessione backend è in ascolto su una singola porta HTTP (porta 80). Quando provo a reindirizzare il traffico da HTTP a HTTPS (porta 443), ricevo l'errore "ERR_TOO_MANY_REDIRECTS".
Breve descrizione
I Classic Load Balancer non supportano il reindirizzamento del traffico da HTTP a HTTPS come funzionalità nativa. A tal fine, devi configurare regole di riscrittura sulle istanze del server web dietro il Classic Load Balancer.
Configura le regole di riscrittura sui server delle applicazioni web per utilizzare l'intestazione X-Forwarded-Proto e reindirizzare le richieste HTTP. Altrimenti, le regole di riscrittura possono creare un ciclo infinito di richieste di reindirizzamento tra il Classic Load Balancer e le istanze dietro il bilanciatore del carico. Tale ciclo genera l'errore "ERR_TOO_MANY_REDIRECTS".
Nota: gli Application Load Balancer supportano azioni di reindirizzamento che possono essere utilizzate per reindirizzare il traffico da HTTP a HTTPS. Per utilizzare questa funzionalità, esegui la migrazione del Classic Load Balancer a un Application Load Balancer.
Risoluzione
Esamina i seguenti esempi di configurazione per server Web Apache, NGINX e IIS. Configura i server web dietro il Classic Load Balancer per utilizzare l'intestazione X-Forwarded-Proto affinché il traffico venga indirizzato in base all'utilizzo di HTTP o HTTPS da parte dei client. Assicurati di aggiungere regole di riscrittura ai server web che:
- Utilizzino HTTP per reindirizzare i client a un URL HTTPS
- Utilizzino HTTPS per servire direttamente i client
Nota: modifica i seguenti esempi di configurazione in base alla tua configurazione e al caso d'uso.
Server Apache: Metodo del file host virtuale
È consigliabile utilizzare il seguente metodo per configurare i server web:
-
Apri il file di configurazione di Apache. Le posizioni possibili sono /etc/httpd/conf/httpd.conf (Apache 2/httpd), /etc/apache2/sites-enabled/ (Apache 2.4) o /etc/apache2/apache2.conf (Apache su Ubuntu).
-
Aggiungi una regola di riscrittura alla sezione VirtualHost del file di configurazione simile alla seguente:
<VirtualHost *:80>RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] </VirtualHost> -
Salva il file di configurazione di Apache.
-
Riavvia Apache.
Server Apache: metodo del file .htaccess
Se non hai accesso al file di configurazione principale di Apache, utilizza i file .htaccess. Per ulteriori informazioni, consulta la sezione When (not) to use .htaccess files (Quando (non) utilizzare i file .htaccess) nella pagina Apache HTTP Server Tutorial: .htaccess files (Tutorial Server HTTP Apache: file .htaccess) del sito web Apache.
Per configurare i server web, completa i seguenti passaggi:
-
Apri il file di configurazione di Apache. Le posizioni possibili sono /etc/httpd/conf/httpd.conf (Apache 2/httpd) o /etc/apache2/sites-enabled/ (Apache 2.4).
-
Modifica la direttiva Directory per attivare .htaccess:
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> -
Salva il file di configurazione di Apache.
-
Apri il file .htaccess.
-
Aggiungi una regola di riscrittura simile alla seguente:
RewriteEngine OnRewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] -
Salva il file .htaccess.
-
Riavvia Apache.
Server NGINX
Nota: questa risoluzione si applica a NGINX 1.10.3 (Ubuntu) e NGINX 1.12.1 (Amazon Linux).
Completa i seguenti passaggi:
-
Apri il file di configurazione di NGINX (nginx.conf).
-
Aggiungi la seguente regola di riscrittura. Assicurati di modificare la regola di riscrittura per la tua configurazione:
server { listen 80; server_name _; if ($http_x_forwarded_proto = 'http'){ return 301 https://$host$request_uri; } } -
Riavvia NGINX.
Server IIS
Nota: questa risoluzione si applica a Microsoft Windows Server 2012 R2 e 2016 Base.
Completa i seguenti passaggi:
-
Installa il modulo di riscrittura degli URL di IIS. Per ulteriori informazioni, consulta URL rewrite (Riscrittura degli URL) sul sito web Microsoft.
-
Apri il file web.config.
-
Aggiungi la seguente regola di riscrittura alla sezione <system.webServer>. Modifica la regola di riscrittura per la tua configurazione specifica:
<rewrite> <rules> <rule name="Rewrite HTTP to HTTPS" stopProcessing="true"> <match url="^(.*)$"/> <conditions logicalGrouping="MatchAny"> <add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$"/> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> </rule> </rules> </rewrite> -
Salva il file web.config.
-
Apri Gestione IIS.
-
Aggiorna il sito web predefinito.
-
Verifica che la nuova regola di riscrittura sia visualizzata nella sezione Riscrittura URL.
-
Riavvia il sito web.
-
Verifica che il reindirizzamento funzioni.
Informazioni correlate
- Argomenti
- Networking & Content Delivery
- Lingua
- Italiano
