Recherche de site Web

Comment configurer des hôtes virtuels basés sur le nom et sur IP (blocs de serveur) avec NGINX


Dans un laps de temps relativement court depuis son développement et sa mise à disposition (un peu plus de 10 ans), Nginx a connu une croissance soutenue et régulière parmi les serveurs Web en raison de ses hautes performances et de sa faible utilisation de la mémoire.

Étant donné que Nginx est un logiciel libre et open source, il a été adopté par des milliers d’administrateurs de serveurs Web à travers le monde, non seulement dans les serveurs Linux et *nix, mais aussi dans Microsoft Windows.

Ne manquez pas : Hébergement virtuel basé sur le nom Apache et basé sur IP

Pour ceux d’entre nous qui sont les plus habitués à Apache, Nginx peut avoir une courbe d’apprentissage un peu abrupte (du moins c’était mon cas), mais cela vaut certainement ses fruits une fois que vous avez créé quelques sites et commencé à voir les statistiques de trafic et d’utilisation des ressources.

Dans cet article, nous allons expliquer comment utiliser Nginx pour mettre en place un hébergement virtuel basé sur le nom et l’IP dans les serveurs CentOS/RHEL 7 et Debian 8 et dérivés, en commençant par Ubuntu 15.04 et ses spin-offs.

Notre scénario de test pour cet article est le suivant :

  1. Système d’exploitation : Debian 8 Jessie server [IP 192.168.0.25]
  2. Passerelle : routeur [IP 192.168.0.1]
  3. Serveur Web : Nginx 1.6.2-5
  4. Domaines factices : www.tecmintlovesnginx.com et www.nginxmeanspower.com.

Installation de Nginx Web Server

Si vous ne l’avez pas déjà fait, veuillez installer Nginx avant de continuer. Si vous avez besoin d’aide pour commencer, une recherche rapide de nginx sur ce site vous donnera plusieurs articles sur ce sujet. Cliquez sur l’icône de la loupe en haut de cette page et recherchez le mot-clé nginx. Si vous ne savez pas comment rechercher des articles sur ce site, ne vous inquiétez pas, nous avons ajouté des liens vers les articles de nginx, il suffit de le parcourir et de l’installer selon vos distributions Linux respectives.

  1. Installer et compiler Nginx à partir des sources dans RHEL/CentOS 7
  2. Installer Nginx Web Server sur Debian 8
  3. Installer Nginx avec MariaDB et PHP/PHP-FPM sur Fedora 23
  4. Installer Nginx Web Server sur Ubuntu 15.10 Server/Desktop
  5. Protéger par mot de passe les répertoires du site Web Nginx

Ensuite, préparez-vous à continuer avec le reste de ce tutoriel.

Création d’hôtes virtuels basés sur le nom dans Nginx

Comme vous le savez sûrement déjà, un hébergeur virtuel est un site Web qui est servi par Nginx dans un seul VPS cloud ou un serveur physique. Cependant, dans la documentation de Nginx, vous trouverez le terme « blocs de serveur » à la place, mais il s’agit fondamentalement de la même chose appelée par des noms différents.

La première étape pour configurer des hôtes virtuels est de créer un ou plusieurs blocs de serveur (dans notre cas, nous en créerons deux, un pour chaque domaine factice) dans le fichier de configuration principal (/etc/nginx/nginx.conf) ou à l’intérieur de /etc/nginx/sites-available.

Bien que le nom des fichiers de configuration dans ce répertoire (sites-available) puisse être défini comme vous le souhaitez, c’est une bonne idée d’utiliser le nom des domaines, et en plus nous avons choisi d’ajouter l’extension .conf pour indiquer qu’il s’agit de fichiers de configuration.

Ces blocs de serveur peuvent être relativement complexes, mais dans leur forme de base, ils se composent du contenu suivant :

Dans /etc/nginx/sites-available/tecmintlovesnginx.com.conf :

server {  
    listen       80;  
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
    error_log  /var/www/logs/tecmintlovesnginx.error.log error; 
        root   /var/www/tecmintlovesnginx.com/public_html;  
        index  index.html index.htm;  
}

Dans /etc/nginx/sites-available/nginxmeanspower.com.conf :

server {  
    listen       80;  
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
    access_log  /var/www/logs/nginxmeanspower.access.log;  
    error_log  /var/www/logs/nginxmeanspower.error.log error;
    root   /var/www/nginxmeanspower.com/public_html;  
    index  index.html index.htm;  
}

Vous pouvez utiliser les blocs ci-dessus pour commencer à configurer vos hôtes virtuels, ou vous pouvez créer les fichiers avec le squelette de base à partir de /etc/nginx/sites-available/default (Debian) ou /etc/nginx/nginx.conf.default (CentOS).

Une fois copiés, modifiez leurs autorisations et leur propriété :

# chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf

Debian et dérivés

# chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf

CentOS et RHEL

# chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

Lorsque vous avez terminé, vous devez supprimer le fichier d’exemple ou le renommer en un autre pour éviter toute confusion ou conflit.

Veuillez noter que vous devrez également créer le répertoire pour les journaux (/var/www/logs) et donner à l’utilisateur Nginx (nginx ou www-data, selon que vous utilisez CentOS ou Debian) des permissions de lecture et d’écriture dessus :

# mkdir /var/www/logs
chmod -R 660 /var/www/logs
chgrp <nginx user> /var/www/logs

Les hôtes virtuels doivent maintenant être activés en créant un lien symbolique vers ce fichier dans le répertoire sites-enabled :

# ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

Ensuite, créez un exemple de fichier html nommé index.html à l’intérieur de /var/www/<nom de domaine>/public_html pour chacun des hôtes virtuels (remplacez <nom de domaine> si nécessaire). Modifiez le code suivant si nécessaire :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Tecmint loves Nginx</title>
  </head>
  <body>
  <h1>Tecmint loves Nginx!</h1>
  </body>
</html>

Enfin, testez la configuration de Nginx et démarrez le serveur web. S’il y a des erreurs dans la configuration, vous serez invité à les corriger :

# nginx -t && systemctl start nginx

et ajoutez les entrées suivantes à votre fichier /etc/hosts sur votre machine locale en tant que stratégie de résolution de noms de base :

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Lancez ensuite un navigateur Web et accédez aux URL répertoriées ci-dessus :

Pour ajouter plus d’hôtes virtuels dans Nginx, il suffit de répéter les étapes décrites ci-dessus autant de fois que nécessaire.

Hôtes virtuels basés sur IP dans Nginx

Contrairement aux hôtes virtuels basés sur le nom où tous les hôtes sont accessibles via la même adresse IP, les hôtes virtuels basés sur IP nécessitent une combinaison IP :port différente.

Cela permet au serveur Web de renvoyer différents sites en fonction de l’adresse IP et du port sur lequel la demande est reçue. Étant donné que les hôtes virtuels nommés nous donnent l’avantage de partager une adresse IP et un port, ils sont la norme pour les serveurs Web à usage général et devraient être la configuration de choix, sauf si votre version installée de Nginx ne prend pas en charge l’indication de nom de serveur (SNI), soit parce qu’il s’agit d’une version VRAIMENT obsolète, soit parce qu’elle a été compilée sans l’option de compilation –with-http_ssl_module.

Si

# nginx -V

ne renvoie pas les options en surbrillance ci-dessous :

vous devrez mettre à jour votre version de Nginx ou la recompiler, en fonction de votre méthode d’installation d’origine. Pour compiler Nginx, suivez l’article ci-dessous :

  1. Installer et compiler Nginx à partir des sources dans RHEL/CentOS 7

En supposant que nous soyons prêts à partir, nous devons noter qu’une autre condition préalable pour les hôtes virtuels basés sur IP est la disponibilité d’adresses IP distinctes, soit en les attribuant à des interfaces réseau distinctes, soit en utilisant des adresses IP virtuelles (également appelées aliasing IP).

Pour effectuer un alias d’IP dans Debian (en supposant que vous utilisez eth0), éditez /etc/network/interfaces comme suit :

Debian et dérivés

auto eth0:1
iface eth0:1 inet static
        address 192.168.0.25
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
        address 192.168.0.26
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Dans l’exemple ci-dessus, nous créons deux cartes réseau virtuelles à partir de eth0 : eth0:1 (192.168.0.25) et eth0:2 (192.168.0.26).

CentOS et RHEL

Dans CentOS, renommez /etc/sysconfig/network-scripts/ifcfg-enp0s3 en ifcfg-enp0s3:1 et faites-en une copie en tant que ifcfg-enp0s3:2, puis modifiez simplement les lignes suivantes, respectivement :

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

et

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Une fois cela fait, redémarrez le service réseau :

# systemctl restart networking

Ensuite, apportez les modifications suivantes aux blocs de serveur précédemment définis dans cet article :

Dans /etc/nginx/sites-available/tecmintlovesnginx.com.conf :

listen 192.168.0.25:80

Dans /etc/nginx/sites-available/nginxmeanspower.com.conf :

listen 192.168.0.26:80

Enfin, redémarrez Nginx pour que les modifications prennent effet.

# systemctl restart nginx

Et n’oubliez pas de mettre à jour votre /etc/hosts local en conséquence :

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Ainsi, chaque requête adressée à 192.168.0.25 et 192.168.0.26 sur le port 80 renverra respectivement tecmintlovesnginx.com et nginxmeanspower.com :

Comme vous pouvez le voir dans les images ci-dessus, vous disposez maintenant de deux hôtes virtuels basés sur IP utilisant la seule carte réseau de votre serveur avec deux alias IP différents.

Résumé

Dans ce tutoriel, nous avons expliqué comment configurer des hôtes virtuels basés sur le nom et sur IP dans Nginx. Bien que vous souhaitiez probablement utiliser la première option, il est important de savoir que l’autre option est toujours là si vous en avez besoin - assurez-vous simplement de prendre cette décision après avoir pris en compte les faits décrits dans ce guide.

De plus, vous voudrez peut-être mettre en signet les documents Nginx car il vaut la peine de s’y référer souvent lors de la création de blocs de serveur (voilà - nous parlons maintenant dans le langage Nginx) et de leur configuration. Vous n’en reviendrez pas de toutes les options disponibles pour configurer et régler ce serveur Web exceptionnel.

Comme toujours, n’hésitez pas à nous écrire en utilisant le formulaire ci-dessous si vous avez des questions ou des commentaires sur cet article. Nous sommes impatients d’avoir de vos nouvelles et vos commentaires sur ce guide sont les bienvenus.

Articles connexes: