Comment configurer les hôtes virtuels basés sur le nom et IP (blocs de serveurs) avec Nginx

Comment configurer les hôtes virtuels basés sur le nom et IP (blocs de serveurs) avec Nginx

Dans une période relativement courte depuis son développement et mis à 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 performances élevées et de sa faible consommation de mémoire.

Hébergement virtuel basé sur le nom et basé sur IP Nginx

Depuis Nginx est un logiciel gratuit 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 manque pas: Hébergement virtuel basé sur le nom d'Apache et basé sur IP

Pour ceux d'entre nous les plus habitués Apache, Nginx Peut avoir une courbe d'apprentissage quelque peu abrupte (du moins c'était mon cas), mais cela est certainement payant une fois que vous avez installé quelques sites et commencer à voir le trafic et les statistiques d'utilisation des ressources.

Dans cet article, nous expliquerons comment utiliser nginx pour configurer sur le nom et IP Hébergement virtuel dans Centos/ /Rhel 7 serveurs 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 opérateur: 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 du serveur Web Nginx

Si vous ne l'avez pas déjà fait, veuillez installer Nginx avant de continuer plus loin. Si vous avez besoin d'aide pour commencer, une recherche rapide pour Nginx dans ce site renvoie 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 ici, nous avons ajouté des liens vers les articles Nginx, passez-le et installez-le conformément à vos distributions Linux respectives.

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

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

Création d'hôtes virtuels basés sur des noms dans Nginx

Comme je suis sûr que vous le savez déjà, un hôte virtuel est un site Web qui est servi par Nginx dans un seul Cloud VPS ou Server Physical. Cependant, dans les documents Nginx, vous trouverez le terme "Blocs de serveur" Au lieu de cela, mais ils sont fondamentalement la même chose appelée par différents noms.

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.confli) ou à l'intérieur / etc / nginx / sites disponible.

Bien que le nom des fichiers de configuration de ce répertoire (Sites disponible) Peut être défini sur ce que vous voulez, c'est une bonne idée d'utiliser le nom des domaines, et en plus nous avons choisi d'ajouter le .confli Extension pour indiquer que ce sont des fichiers de configuration.

Ces blocs de serveur peuvent être relativement complexes, mais dans leur forme de base, ils sont constitués du contenu suivant:

Dans / etc / nginx / sites-disponible / tecmintlovesnginx.com.confli:

Server écouter 80; server_name tecmintlovesnginx.com www.tecmintlovesnginx.com; Access_log / var / www / logs / tecmintlovesnginx.accès.enregistrer; error_log / var / www / logs / tecmintlovesnginx.erreur.erreur de journal; root / var / www / tecmintlovesnginx.com / public_html; Index index.index html.htm;  

Dans / etc / nginx / sites-disponible / nginxmeanSpower.com.confli:

Server écouter 80; server_name nginxmeanspower.com www.nginxmeanspower.com; Access_log / var / www / logs / nginxmeanSpower.accès.enregistrer; error_log / var / www / logs / nginxmeanSpower.erreur.erreur de journal; root / var / www / nginxmeanSpower.com / public_html; Index index.index html.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-disponible / par défaut (Debian) ou / etc / nginx / nginx.confli.défaut (Centos).

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

# chmod 660 / etc / nginx / sites-disponible / tecmintlovesnginx.com.conf # chmod 660 / etc / nginx / sites-disponible / nginxmeanswer.com.confli 

Debian et dérivés

# chgrp www-data / etc / nginx / sites-disponible / tecmintlovesnginx.com.Conf # chgrp www-data / etc / nginx / sites-disponible / nginxmeanspower.com.confli 

Centos et Rhel

# chgrp nginx / etc / nginx / sites-disponible / tecmintlovesnginx.com.Conf # chgrp nginx / etc / nginx / sites-disponible / nginxmeanSpower.com.confli 

Lorsque vous avez terminé, vous devez supprimer l'exemple de fichier ou le renommer à quelque chose d'autre pour éviter la confusion ou les conflits.

Veuillez noter que vous devrez également créer le répertoire des journaux (/ var / www / journaux) et donner à l'utilisateur Nginx (nginx ou www-data, Selon que vous dirigez Centos ou Debian) lisez et écrivez des autorisations à ce sujet:

# mkdir / var / www / logs # chmod -r 660 / var / www / logs # chgrp / var / www / logs 

Les hôtes virtuels doivent désormais être activés en créant un lien symbolique dans ce fichier dans le répertoire compatible des sites:

# ln -s / etc / nginx / sites-disponible / tecmintlovesnginx.com.conf / etc / nginx / sites compatible / tecmintlovesnginx.com.Conf # ln -s / etc / nginx / sites-disponible / nginxmean.com.conf / etc / nginx / sites compatible / nginxmeanSpower.com.confli 

Ensuite, créez un exemple de fichier HTML nommé indice.html à l'intérieur / var / www // public_html Pour chacun des hôtes virtuels (remplacer comme requis). Modifiez le code suivant si nécessaire:

    Tecmint aime Nginx   

Tecmint aime Nginx!

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 
Vérifier la configuration de Nginx

et ajoutez les entrées suivantes à votre / etc / hôtes Fichier dans votre machine locale en tant que stratégie de résolution de nom de base:

192.168.0.25 tecmintlovesnginx.com 192.168.0.25 nginxmean pour.com 

Ensuite, lancez un navigateur Web et accédez aux URL énumérées ci-dessus:

Vérifiez les hôtes virtuels basés sur le nom de Nginx

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

Par opposition à sur le nom hôtes virtuels où tous les hôtes sont accessibles via la même adresse IP, IP Les hôtes virtuels nécessitent un autre IP: Port combinaison chacun.

Cela permet au serveur Web de renvoyer différents sites en fonction de l'adresse IP et du port où la demande est reçue sur. Étant donné que les hôtes virtuels basés sur noms 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 à moins que votre version installée de Nginx ne prenne en charge Indication du nom du serveur (Sni), soit parce que c'est une version vraiment obsolète, soit parce qu'elle a été compilée sans le -avec http_ssl_module option de compilation.

Si,

# nginx -v 

ne renvoie pas les options en surbrillance ci-dessous:

Vérifiez la version et les modules Nginx

Vous devrez mettre à jour votre version de Nginx ou la recompiler, selon 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 bons à partir, nous devons noter qu'une autre condition préalable pour IP Les hôtes virtuels sont la disponibilité d'IPS séparés - soit en les affectant à des interfaces réseau distinctes, soit via l'utilisation d'IPs virtuels (également appelés aliasing IP).

Pour effectuer un alias IP dans Debian (En supposant que vous utilisez ETH0), modifier / etc / réseau / interfaces comme suit:

Debian et dérivés

AUTO ETH0: 1 IFACE ETH0: 1 Adresse statique INET 192.168.0.25 Masque de réseau 255.255.255.0 réseau 192.168.0.0 Broadcast 192.168.0.255 passerelle 192.168.0.1 Auto eth0: 2 iface eth0: 2 Adresse statique INET 192.168.0.26 Masque de réseau 255.255.255.0 réseau 192.168.0.0 Broadcast 192.168.0.255 passerelle 192.168.0.1 

Dans l'exemple ci-dessus, nous créons deux NIC virtuels à partir de ETH0: ETH0: 1 (192.168.0.25) et ETH0: 2 (192.168.0.26).

Centos et Rhel

Dans Centos, renommez / etc / sysconfig / réseau-scripts / ifcfg-enp0s3 comme ifcfg-enp0s3: 1 et faire une copie comme ifcfg-enp0s3: 2, Et puis changez 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 de serveur précédemment définis dans cet article:

Dans / etc / nginx / sites-disponible / tecmintlovesnginx.com.confli:

Écouter 192.168.0.25:80 

Dans / etc / nginx / sites-disponible / nginxmeanSpower.com.confli:

Écouter 192.168.0.26:80 

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

# systemctl redémarrer nginx 

Et n'oubliez pas de mettre à jour votre local / etc / hôtes par conséquent:

192.168.0.25 tecmintlovesnginx.com 192.168.0.26 NginxmeanSpower.com 

Ainsi, chaque demande faite à 192.168.0.25 et 192.168.0.26 sur le port 80 reviendra tecmintlovesnginx.com et nginxmeanspower.com, respectivement:

Vérifier l'hôte virtuel basé sur Nginx IP

Comme vous pouvez le voir dans les images ci-dessus, vous avez maintenant deux hôtes virtuels basés sur IP en utilisant le seul NIC de votre serveur avec deux alias IP différents.

Résumé

Dans ce tutoriel, nous avons expliqué comment configurer les deux sur le nom et IP hôtes virtuels dans nginx. Bien que vous voudrez 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 examiné les faits décrits dans ce guide.

De plus, vous voudrez peut-être mettre en signet les documents Nginx car il est digne et bien de les référer souvent lors de la création de blocs de serveurs (vous l'avez - nous parlons dans la langue Nginx maintenant) et en les configurant maintenant. Vous ne croirez pas toutes les options disponibles pour configurer et régler ce serveur Web exceptionnel.

Comme toujours, n'hésitez pas à nous laisser une ligne en utilisant le formulaire ci-dessous si vous avez des questions ou des commentaires sur cet article. Nous sommes impatients de vous entendre, et vos commentaires sur ce guide sont les bienvenus.