Comment configurer des blocs de serveur Nginx sur CentOS 7

introduction

Nginx est l'un des serveurs Web les plus populaires au monde et est responsable de l'hébergement de sites Web parmi les plus importants et les plus achalandés. Dans la plupart des cas, Nginx est plus léger et plus évolutif qu’Apache et peut être utilisé comme serveur Web ou proxy inverse.

Nginx utiliseserver blocks pour gérer les configurations pour un site ou un domaine individuel. Les blocs de serveur permettent à un serveur d'héberger plusieurs domaines ou interfaces en utilisant un système correspondant. Ceci est pertinent pour ceux qui cherchent à héberger plus d'un site sur un seul VPS.

Chaque domaine configuré dirigera le visiteur vers un répertoire spécifique contenant les informations de ce site, sans jamais indiquer que le même serveur est également responsable des autres sites. Ce schéma est extensible sans aucune limite logicielle, à condition que votre serveur puisse gérer le trafic que tous les sites attirent.

Dans ce guide, nous expliquerons comment configurer des blocs de serveur Nginx sur un VPS CentOS 7. Au cours de ce processus, vous apprendrez à diffuser un contenu différent à différents visiteurs en fonction du domaine demandé.

Conditions préalables

Avant de commencer avec ce guide, vous devez d'abord suivre certaines étapes.

Vous aurez besoin d'accéder à un serveur CentOS 7 avec un utilisateur non root disposant des privilègessudo. Si vous ne l'avez pas encore configuré, vous pouvez parcourir lesCentOS 7 initial server setup guide pour créer ce compte.

Vous devrez également installer Nginx pour pouvoir configurer des blocs de serveur. Si vous voulez une pile LEMP entière (Linux, Nginx, MySQL et PHP) sur votre serveur, vous pouvez suivre notre guide sursetting up a LEMP stack in CentOS 7. Si vous n'avez besoin que de Nginx, vous pouvez l'installer via le référentielyum de Nginx:

Tout d’abord, ajoutez le référentiel Nginx à la liste des sources de logiciels de votre serveur.

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

Vous pouvez maintenant utiliseryum pour télécharger et installer Nginx.

sudo yum install nginx

Une fois ces étapes terminées, connectez-vous en tant que votre compte d'utilisateur non root via SSH et poursuivez avec le tutoriel.

Note: L'exemple de configuration de ce guide créera un bloc serveur pourexample.com et un autre pourexample2.com. Celles-ci seront référencées tout au long du guide, mais vous devrez remplacer vos propres domaines ou valeurs par la suite. Pour savoir comment configurer vos noms de domaine avec DigitalOcean, suivezthis link.

Si vous n'avez aucun domaine réel sur lequel jouer, nous vous montrerons comment tester la configuration de votre bloc de serveur avec des valeurs factices vers la fin du didacticiel.

[[step-one -—- create-the-directory-structure]] == Step One - Créer la structure de répertoire

Premièrement, nous devons créer une structure de répertoires qui contiendra les données du site à servir aux visiteurs.

Nosdocument root (le répertoire de niveau supérieur que Nginx recherche pour trouver le contenu à servir) seront définis sur des répertoires individuels dans le répertoire/var/www. Nous allons créer ici un répertoire pour chacun des blocs de serveurs que nous prévoyons de créer.

Dans chacun de ces répertoires, nous allons créer un répertoirehtml qui contiendra nos fichiers réels. Cela nous donne une certaine flexibilité dans notre hébergement.

Nous pouvons créer ces répertoires en utilisant la commandemkdir (avec un indicateur-p qui nous permet de créer un dossier avec un dossier imbriqué à l'intérieur):

sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/example2.com/html

N'oubliez pas que les parties enred représentent les noms de domaine que nous voulons servir à partir de notre VPS.

Accorder des autorisations

Nous avons maintenant la structure de répertoires pour nos fichiers, mais ils appartiennent à notre utilisateurroot. Si nous voulons que notre utilisateur régulier puisse modifier des fichiers dans nos répertoires Web, nous pouvons changer la propriété avecchown:

sudo chown -R $USER:$USER /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example2.com/html

La variable$USER prendra la valeur de l'utilisateur sous lequel vous êtes actuellement connecté lorsque vous soumettez la commande. En faisant cela, notre utilisateur régulier possède désormais les sous-répertoirespublic_html où nous allons stocker notre contenu.

Nous devrions également modifier un peu nos autorisations pour nous assurer que l'accès en lecture est autorisé pour le répertoire Web général, ainsi que pour tous les fichiers et dossiers qu'il contient, afin que les pages puissent être servies correctement:

sudo chmod -R 755 /var/www

Votre serveur Web doit maintenant disposer des autorisations nécessaires pour diffuser du contenu et votre utilisateur doit pouvoir créer du contenu dans les dossiers appropriés.

[[step-two -—- create-demo-pages-for-each-site]] == Étape 2 - Créer des pages de démonstration pour chaque site

Maintenant que notre structure de répertoires est en place, créons du contenu à servir.

Parce que ceci est juste pour la démonstration et les tests, nos pages seront très simples. Nous allons simplement créer une pageindex.html pour chaque site qui identifie ce domaine spécifique.

Commençons parexample.com. Nous pouvons ouvrir un fichierindex.html dans notre éditeur en tapant:

nano /var/www/example.com/html/index.html

Dans ce fichier, créez un document HTML simple indiquant le site auquel la page est connectée. Pour ce guide, le fichier de notre premier domaine ressemblera à ceci:


  
    Welcome to Example.com!
  
  
    

Success! The example.com server block is working!

Enregistrez et fermez le fichier lorsque vous avez terminé.

Nous pouvons copier ce fichier pour l'utiliser comme modèle pour lesindex.html de notre deuxième site en tapant:

cp /var/www/example.com/html/index.html /var/www/example2.com/html/index.html

Maintenant ouvrons ce fichier et modifions les informations pertinentes:

nano /var/www/example2.com/html/index.html

  
    Welcome to Example2.com!
  
  
    

Success! The example2.com server block is working!

Enregistrez et fermez également ce fichier. Vous avez maintenant les pages nécessaires pour tester la configuration de bloc du serveur.

[[step-three -—- create-new-server-block-files]] == Étape trois - Créer de nouveaux fichiers de bloc de serveur

Les fichiers de bloc de serveur spécifient la configuration de nos sites distincts et déterminent la façon dont le serveur Web Nginx répondra aux diverses demandes de domaine.

Pour commencer, nous devons configurer le répertoire dans lequel nos blocs de serveurs seront stockés, ainsi que le répertoire qui indique à Nginx qu'un bloc de serveur est prêt à être utilisé par les visiteurs. Le répertoiresites-available conservera tous nos fichiers de bloc serveur, tandis que le répertoiresites-enabled contiendra des liens symboliques vers les blocs serveur que nous voulons publier. Nous pouvons créer les deux répertoires en tapant:

sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

Note: Cette structure de répertoire a été introduite par des contributeurs Debian, mais nous l'incluons ici pour plus de flexibilité dans la gestion de nos blocs serveur (car il est plus facile d'activer et de désactiver temporairement les blocs serveur de cette façon).

Ensuite, nous devrions dire à Nginx de rechercher les blocs de serveur dans le répertoiresites-enabled. Pour ce faire, nous allons éditer le fichier de configuration principal de Nginx et ajouter une ligne déclarant un répertoire facultatif pour les fichiers de configuration supplémentaires:

sudo nano /etc/nginx/nginx.conf

Ajoutez ces lignes à la fin du blochttp {}:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

La première ligne indique à Nginx de rechercher des blocs de serveur dans le répertoiresites-enabled, tandis que la deuxième ligne augmente la quantité de mémoire allouée à l'analyse des noms de domaine (puisque nous utilisons maintenant plusieurs domaines).

Lorsque vous avez terminé ces modifications, vous pouvez enregistrer et fermer le fichier. Nous sommes maintenant prêts à créer notre premier fichier bloc de serveur.

Créer le premier fichier bloc du serveur

Par défaut, Nginx contient un bloc serveur appelédefault.conf que nous pouvons utiliser comme modèle pour nos propres configurations. Nous pouvons créer notre premier fichier de configuration de bloc de serveur en copiant le fichier par défaut:

sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/example.com.conf

Maintenant, ouvrez le nouveau fichier dans votre éditeur de texte avec les privilèges root:

sudo nano /etc/nginx/sites-available/example.com.conf

Note: En raison des configurations que nous avons décrites, tous les fichiers de bloc serveurmust se terminent par.conf.

En ignorant les lignes commentées, le fichier ressemblera à ceci:

server {
    listen  80;
    server_name localhost;

    location / {
        root  /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root  /usr/share/nginx/html;
    }
}

La première chose que nous allons devoir ajuster est leserver_name, qui indique à Nginx quelles requêtes pointer vers ce bloc serveur. Nous déclarerons le nom du serveur principal,example.com, ainsi qu'un alias supplémentaire pourwww.example.com, afin que les requêteswww. et non -www. reçoivent le même contenu :

server_name example.com www.example.com;

Note: Chaque instruction Nginx doit se terminer par un point-virgule (;), vérifiez donc chacune de vos lignes de relevé si vous rencontrez des problèmes plus tard.

Ensuite, nous voulons modifier la racine du document, spécifiée par la directiveroot. Pointez-le sur la racine du document du site que vous avez créée:

root /var/www/example.com/html;

Nous souhaitons également ajouter une commandetry_files qui se termine par une erreur 404 si le nom de fichier ou le répertoire souhaité est introuvable:

try_files $uri $uri/ =404;

Lorsque vous avez terminé, votre fichier ressemblera à ceci:

server {
    listen  80;

    server_name example.com www.example.com;

    location / {
        root  /var/www/example.com/html;
        index  index.html index.htm;
        try_files $uri $uri/ =404;
    }

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root  /usr/share/nginx/html;
    }
}

C'est tout ce dont nous avons besoin pour une configuration de base. Enregistrez et fermez le fichier pour quitter.

Créer le deuxième fichier bloc du serveur

Maintenant que nous avons établi notre premier fichier de bloc de serveur, nous pouvons créer notre deuxième fichier en le copiant et en l’ajustant au besoin.

Commencez par le copier aveccp:

sudo cp /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-available/example2.com.conf

Ouvrez le nouveau fichier avec les privilèges root dans votre éditeur de texte:

sudo nano /etc/nginx/sites-available/example2.com.conf

Vous devez maintenant modifier toutes les informations pour référencer votre deuxième domaine. Lorsque vous avez terminé, votre deuxième fichier de blocage de serveur peut ressembler à ceci:

server {
    listen  80;

    server_name example2.com www.example2.com;

    location / {
        root  /var/www/example2.com/html;
        index  index.html index.htm;
        try_files $uri $uri/ =404;
    }

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root  /usr/share/nginx/html;
    }
}

Lorsque vous avez terminé ces modifications, vous pouvez enregistrer et fermer le fichier.

[[step-four -—- enable-the-new-server-block-files]] == Étape quatre - Activer les nouveaux fichiers de bloc de serveur

Maintenant que nous avons créé nos fichiers de bloc de serveur, nous devons les activer pour que Nginx sache les servir aux visiteurs. Pour ce faire, nous pouvons créer un lien symbolique pour chaque bloc serveur dans le répertoiresites-enabled:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
sudo ln -s /etc/nginx/sites-available/example2.com.conf /etc/nginx/sites-enabled/example2.com.conf

Lorsque vous avez terminé, redémarrez Nginx pour que ces modifications prennent effet:

sudo systemctl restart nginx

[[step-five -—- set-up-local-hosts-file-optional]] == Étape cinq - Configurer le fichier d'hôtes locaux (facultatif)

Si vous avez utilisé des exemples de domaines au lieu de domaines réels pour tester cette procédure, vous pouvez toujours tester la fonctionnalité de vos blocs de serveur en modifiant temporairement le fichierhosts sur votre ordinateur local. Cela interceptera toutes les demandes pour les domaines que vous avez configurés et les dirigera vers votre serveur VPS, comme le ferait le système DNS si vous utilisiez des domaines enregistrés. Toutefois, cela ne fonctionnera que sur votre ordinateur local et sera simplement utile à des fins de test.

Note: Assurez-vous que vous utilisez votre ordinateur local pour ces étapes et non votre serveur VPS. Vous aurez besoin d'accéder aux informations d'identification administratives pour cet ordinateur.

Si vous êtes sur un ordinateur Mac ou Linux, modifiez votre fichierhosts local avec des privilèges administratifs en tapant:

sudo nano /etc/hosts

Si vous êtes sur une machine Windows, vous pouvez trouver des instructions sur la modification de votre fichier d'hôteshere.

Les détails que vous devez ajouter sont l'adresse IP publique de votre VPS, suivie du domaine que vous souhaitez utiliser pour atteindre ce VPS:

127.0.0.1   localhost
127.0.1.1   guest-desktop
server_ip_address example.com
server_ip_address example2.com

Cela dirigera toutes les demandes deexample.com etexample2.com sur notre ordinateur local et les enverra à notre serveur àserver_ip_address.

[[step-six -—- test-your-results]] == Sixième étape - Testez vos résultats

Maintenant que vos blocs de serveur sont configurés, vous pouvez facilement tester votre configuration en accédant aux domaines que vous avez configurés dans votre navigateur Web:

http://example.com

Vous devriez voir une page qui ressemble à ceci:

Success! The example.com server block is working!

De même, si vous visitez vos autres domaines, vous verrez les fichiers que vous avez créés pour eux.

Si tous les sites que vous avez configurés fonctionnent correctement, vous avez correctement configuré vos nouveaux blocs de serveur Nginx sur le même serveur CentOS.

Si vous avez ajusté le fichierhosts de votre ordinateur personnel, vous souhaiterez peut-être supprimer les lignes que vous avez ajoutées maintenant que vous avez vérifié que votre configuration fonctionne. Cela empêchera votre fichier hôtes d'être rempli avec des entrées qui ne sont pas réellement nécessaires.

Conclusion

À ce stade, vous devriez maintenant disposer d’un seul serveur CentOS 7 gérant plusieurs sites avec des domaines distincts. Vous pouvez développer ce processus en suivant les étapes décrites ci-dessus pour créer ultérieurement des blocs de serveur supplémentaires. Il n'y a pas de limite logicielle au nombre de noms de domaines que Nginx peut gérer. N'hésitez donc pas à en créer autant que votre serveur est capable de gérer.