NGINX Reindirizza http a https e non www a ww

Sto configurando un server nginx con un SSL.

Il dominio con ssl è www.mydomain.com

Voglio redirect tutte le richieste da:

http://mydomain.com , http://www.mydomain.com e https://mydomain.com a

https://www.mydomain.com

Attualmente ho i seguenti blocchi server:

server{ listen 443 ssl; root /www/mydomain.com/; ssl_certificate /ssl/domain.crt; ssl_certificate /ssl/domain.key; . . . } server{ listen 80; server_name mydomain.com; return 301 https://www.mydomain.com$request_uri; } server{ listen 80; server_name www.mydomain.com; return 301 https://www.mydomain.com$request_uri; } server{ listen ssl 443; server_name mydomain.com; return 301 https://www.mydomain.com$request_uri; } 

Questo al momento non funziona, ma non capisco perché no. Posso ottenere una combinazione di http -> https funzionante o no-www to -> www funzionante, ma il loro mixaggio come sopra non funziona.

Il reindirizzamento ssl non funzionerà se il tuo certificato SSL non supporta il dominio non www. La configurazione è corretta ma può essere ridotta a un solo server di reindirizzamento

Inoltre, non dimenticare di ricaricare nginx sudo service nginx reload

 server { listen 80; listen 443 ssl; server_name example.com; # add ssl settings return 301 https://www.example.com$request_uri; } 

Sono in ritardo, ma puoi fare così

 server{ listen 443 ssl; server_name www.mydomain.com; root /www/mydomain.com/; ssl on; ssl_certificate /ssl/domain.crt; ssl_certificate /ssl/domain.key; . . . } server{ listen 80; server_name www.mydomain.com mydomain.com; return 301 https://$server_name$request_uri; } server{ listen 443; server_name mydomain.com; return 301 https://www.$server_name$request_uri; } 

Oppure puoi sostituire return 301 https://www.$server_name$request_uri; con rewrite ^ http://www.$server_name$request_uri? permanent; rewrite ^ http://www.$server_name$request_uri? permanent; entrambi funzioneranno

È inoltre necessario impostare questo in Google Webmaster per una migliore SEO.