web-dev-qa-db-fra.com

NGINX Redirige http vers https et non www vers ww

J'installe un serveur nginx avec un SSL.

Le domaine avec le ssl est www.mydomain.com

Je souhaite rediriger toutes les demandes de:

http://mydomain.com , http://www.mydomain.com , & https://mydomain.com à

https://www.mydomain.com

J'ai actuellement la configuration des blocs serveur suivante:

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;
}

Cela ne fonctionne pas actuellement, mais je ne comprends pas pourquoi. Je peux obtenir une combinaison de http -> https de travail ou de no-www vers -> www de travail, mais les mélanger comme ci-dessus ne fonctionne pas.

34
on3al

La redirection SSL ne fonctionnera pas si votre certificat SSL ne prend pas en charge le domaine non www. La configuration est correcte mais peut être réduite à un seul serveur de redirection

N'oubliez pas non plus de recharger 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;
}
17
Mohammad AbuShady

Je suis en retard, mais tu peux faire comme ça

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;
}

Ou vous pouvez remplacer return 301 https://www.$server_name$request_uri; avec rewrite ^ http://www.$server_name$request_uri? permanent;, les deux fonctionneront.

Vous devez également définir cela dans Google Webmaster pour un meilleur référencement.

10
Suneel Kumar
#If you like to redirect all "http" to "https" then add the following:
server {
        listen 80;

        server_name yourdomain.com;
        server_name www.yourdomain.com;

 if ($scheme = "http")
        {
                rewrite ^(.*)$ https://yourdomain.com$1 permanent;
        }
}
0
RanchMobile