Comment rediriger www vers non-www avec Nginx sur CentOS 7

introduction

Lorsque votre site Web ou votre application est opérationnel derrière un domaine, il est souvent souhaitable d’autoriser également vos utilisateurs à y accéder via le nom de domaine complet et le sous-domaine * www *. Autrement dit, ils devraient pouvoir visiter votre domaine avec ou sans le préfixe «http: // www. [Www.]», Par exemple. + example.com + ou + www.example.com +, dans un navigateur Web et affiche le même contenu. Bien qu’il existe différentes façons de configurer cela, la meilleure solution, pour des raisons de cohérence et de référencement, consiste à choisir le domaine que vous préférez, brut ou www, et de rediriger l’autre vers le domaine préféré. Ce type de redirection s’appelle une * redirection permanente * ou «redirection 301» et peut être facilement configuré en configurant correctement vos enregistrements de ressources DNS et votre logiciel de serveur Web.

Ce tutoriel vous montrera comment rediriger une URL www vers un site non-www, par exemple. + www.example.com + à + ​​example.com +, avec Nginx sur CentOS 7. Nous vous montrerons également comment rediriger dans l’autre sens, d’une URL non www à http: // www [www]. La version Ubuntu 14.04 de ce didacticiel est disponible à l’adresse here .

Si vous souhaitez effectuer ce type de redirection avec Apache en tant que serveur Web, vous devez plutôt suivre ce tutoriel: https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-apache-on-centos-7 [Comment rediriger www vers non-www avec Apache sur CentOS 7].

Conditions préalables

Ce tutoriel suppose que vous avez les privilèges de superutilisateur, c.-à-d. + sudo + ou root, sur le serveur qui exécute Nginx. Si vous n’avez pas déjà configuré cette configuration, suivez ce didacticiel: Installation du serveur initial sur CentOS 7.

Il est supposé que Nginx est installé. Si vous ne disposez pas déjà de cette configuration, il existe plusieurs tutoriels sur le sujet sous la balise Nginx.

Vous devez pouvoir ajouter des enregistrements au DNS qui gère votre domaine. Si vous ne possédez pas déjà un domaine, vous pouvez en acheter un auprès d’un registraire de domaine et le gérer avec le DNS du registraire ou https://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean- serveurs de noms de domaine commun (DNS de DigitalOcean). Dans ce didacticiel, nous utiliserons le DigitalOcean DNS pour créer les enregistrements nécessaires.

Commençons par configurer vos enregistrements DNS.

Configurer les enregistrements DNS

Afin de configurer la redirection souhaitée, + www.example.com + à + ​​example.com + ou vice-versa, vous devez disposer d’un * A record * pour chaque nom.

Ouvrez ce que vous utilisez pour gérer votre DNS. Pour notre exemple, nous allons utiliser le DNS DigitalOcean.

Si un enregistrement de domaine (également appelé zone) n’existe pas, créez-en un maintenant. Le * nom d’hôte * doit être votre domaine, par exemple. + example.com +, et l’adresse IP doit être définie sur l’adresse IP publique de votre serveur Nginx. Cela créera automatiquement un enregistrement A qui pointe votre domaine vers l’adresse IP que vous avez spécifiée. Si vous utilisez un autre système pour gérer votre domaine, vous devrez peut-être l’ajouter manuellement.

Ensuite, ajoutez un autre enregistrement A avec le nom d’hôte «www» (ou «http://www.exemple.com [www.exemple.com]» si le sous-domaine partiel ne fonctionne pas) et spécifiez la même adresse IP.

Lorsque vous avez créé les deux enregistrements, cela devrait ressembler à ceci:

image: https: //assets.digitalocean.com/articles/redirect/dns_a_records.png [Enregistrements A requis]

Votre serveur devrait maintenant être accessible via les domaines www et non-www, mais nous devons tout de même configurer la redirection. Nous allons le faire maintenant.

Configurer la redirection Nginx

Pour effectuer la redirection 301, vous devez ajouter un nouveau bloc de serveur Nginx qui pointe vers votre bloc de serveur d’origine.

Ouvrez la configuration de bloc de votre serveur Nginx dans un éditeur. Nous allons ajouter un autre fichier de configuration dans le répertoire d’inclusion de Nginx, + / etc / nginx / conf.d + appelé + redirect.conf +:

sudo vi /etc/nginx/conf.d/redirect.conf

Votre bloc de serveur d’origine devrait déjà être défini. Selon la direction que vous souhaitez rediriger, utilisez l’une des options suivantes.

Option 1: Rediriger www vers non-www

Si vous souhaitez rediriger les utilisateurs de www vers un domaine simple et non www, insérez cette configuration:

Nouveau bloc serveur - www to non-www

server {
   server_name www.;
   return 301 $scheme://$request_uri;
}

Sauvegarder et quitter. Cela configure Nginx pour qu’il redirige les demandes de “http://www.example.com [[www.example.com]”] vers “example.com”. Notez qu’il doit exister un autre bloc serveur définissant votre serveur Web non www.

Pour appliquer les modifications, redémarrez Nginx:

sudo systemctl restart nginx

Notez que si vous utilisez HTTPS, la directive + listen + devrait être définie sur le port + 443 + au lieu de + 80 +.

Utilisez cette commande curl pour vous assurer que le domaine non-www redirige vers le domaine www (remplacez la partie en surbrillance par votre domaine actuel):

curl -I http://www.

Vous devriez obtenir une réponse +301 Moved Permanently +, qui indique l’emplacement de la redirection non-www, comme ceci:

Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http:///

Bien sûr, vous devez accéder à votre domaine via un navigateur Web (www et non www).

Option 2: Rediriger les non-www vers www

Si vous souhaitez rediriger des utilisateurs d’un domaine simple non-www vers un domaine www, ajoutez ce bloc de serveur:

Nouveau bloc serveur - non-www to www

server {
   server_name ;
   return 301 $scheme://www.$request_uri;
}

Sauvegarder et quitter. Cela configure Nginx pour qu’il redirige les demandes vers «exemple.com» vers «http://www.exemple.com [www.exemple.com]». Notez qu’il devrait exister un autre bloc serveur définissant votre serveur Web www.

Pour appliquer les modifications, redémarrez Nginx:

sudo systemctl restart nginx

Notez que si vous utilisez HTTPS, la directive + listen + devrait être définie sur le port + 443 + au lieu de + 80 +.

Utilisez cette commande curl pour vous assurer que le domaine non-www redirige vers le domaine www (remplacez la partie en surbrillance par votre domaine actuel):

curl -I http://

Vous devriez obtenir une réponse +301 Moved Permanently +, qui indique l’emplacement de la redirection www, comme ceci:

Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http://www./

Bien sûr, vous devez accéder à votre domaine via un navigateur Web (www et non www).

Conclusion

C’est ça! Votre redirection permanente Nginx est maintenant correctement configurée et vos utilisateurs pourront accéder à votre serveur Web via votre domaine non-www et www.