Recherche de site Web

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


Dans une période relativement courte 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 sur les serveurs Linux et *nix, mais également sur Microsoft Windows.

À ne pas manquer : 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 quelque peu abrupte (du moins c'était mon cas), mais cela s'avère certainement payant une fois que vous en avez configuré quelques-uns. des sites et commencez à voir les statistiques de trafic et d’utilisation des ressources.

Dans cet article, nous expliquerons comment utiliser Nginx pour configurer un hébergement virtuel basé sur le nom et basé sur l'adresse IP dans CentOS/RHEL. 7 et Debian 8 et dérivés, à commencer par Ubuntu 15.04 et ses spin-offs.

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

  1. Système d'exploitation : serveur Debian 8 Jessie [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 du serveur Web Nginx

Si vous ne l'avez pas déjà fait, veuillez installer Nginx avant de continuer. Si vous avez besoin d'aide pour démarrer, une recherche rapide de nginx sur ce site renverra plusieurs articles sur ce sujet. Cliquez sur l'icône en forme de 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 nginx, parcourez-le simplement et installez-le selon vos distributions Linux respectives.

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

Alors préparez-vous à continuer avec le reste de ce didacticiel.

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

Comme vous le savez sûrement déjà, un hôte virtuel est un site Web servi par Nginx dans un seul VPS cloud ou un serveur physique. Cependant, dans la documentation Nginx, vous trouverez à la place le terme "blocs de serveur", 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 consiste à 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 dans /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 le 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é, 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 ses 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 l'exemple de fichier ou le renommer autrement pour éviter toute confusion ou conflit.

Veuillez noter que vous devrez également créer le répertoire des logs (/var/www/logs) et donner à l'utilisateur Nginx (nginx ou www-data , selon que vous utilisez CentOS ou Debian), les autorisations 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 dans /var/www//public_html pour chacun des hôtes virtuels (remplacez selon les besoins). 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 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 ordinateur local comme 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, répétez simplement 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 un nom où tous les hôtes sont accessibles via la même adresse IP, les hôtes virtuels basés sur IP nécessitent un IP:port différent. combinaison chacun.

Cela permet au serveur Web de renvoyer différents sites en fonction de l'adresse IP et du port sur lesquels la demande est reçue. Étant donné que les hôtes virtuels nommés nous offrent l'avantage de partager une adresse IP et un port, ils constituent la norme pour les serveurs Web à usage général et devraient constituer la configuration de choix, à moins que votre version installée de Nginx ne prenne pas en charge l'indication du nom du 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 de sources dans RHEL/CentOS 7

En supposant que nous sommes 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. IP (également appelées alias IP).

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

Debian et ses 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 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 terminé, redémarrez le service réseau :

systemctl restart networking

Ensuite, apportez les modifications suivantes aux blocs 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 faite à 192.168.0.25 et 192.168.0.26 sur le port 80 renverra tecmintlovesnginx.com et nginxmeanspower.com, respectivement :

Comme vous pouvez le voir dans les images ci-dessus, vous disposez désormais 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 didacticiel, nous avons expliqué comment configurer des hôtes virtuels basés sur le nom et basés sur IP dans Nginx. Même si vous souhaiterez probablement utiliser la première option, il est important de savoir que l’autre option est toujours disponible si vous en avez besoin – assurez-vous simplement de prendre cette décision après avoir examiné les faits décrits dans ce guide.

De plus, vous souhaiterez peut-être ajouter les documents Nginx à vos favoris, car il est utile de s'y référer souvent lors de la création de blocs de serveur (et voilà - nous parlons maintenant dans le langage Nginx) et de leur configuration. Vous ne croirez pas 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.