Publié dans apache2, debian, Linux, serveur web, webdev

Nginx et le multi-site ca vous dit ?


Vous avez envie d’hébergé plusieurs sites web dans un même serveur (virtual host) apache le fait  bien mais Nginx aussi.Alors  tout d’abord rassurez vous apache et nginx sont des serveurs web très puissants et flexibles donc le choix de l’un au détriment  l’autre dépend de vos besoins et spécifications.Aujourd’hui  nous verrons comment configurer nginx  pour avoir un environnement multi-site.Pour mon cas j’utilise le couple Uwsgi + Nginx pour héberger mes applications Python/Django  parallèlement aussi j’héberge des applications web en php donc voila mon usecase.

Comme il y un début en tout commençons par l’installation.Pour   ce tutoriel nous utilisons la distribution GNU/Linux Debian Jessie.

Installation

$ sudo apt install nginx

Pour l’instant il n’y rien de bien compliqué à faire après l’installation les fichiers de configurations se trouveront dans le répertoire /etc/nginx .Maintenant configurons ;-).

Configuration

Bon  « scénarisons » d’abord  supposons qu’on veut héberger deux  sites simples avec des noms de domaine différents sur  notre serveur.Donc on aura site1.monserver.com et site2.monserver.com.

Maintenant nous  pouvons commencer la configuration qui se fera en quatre étapes. D’abord la création des répertoires qui va contenir les pages de nos sites ensuite la création des pages et la configuration des block  server pour chaque site au niveau de nginx et enfin faire les tests.

Création des répertoires

$ sudo mdkir -p /var/www/site1.monserver.com/html 

$ sudo mdkir -p /var/www/site2.monserver.com/html

$ sudo chown  $user:$user -R /var/www/site1.monserver.com/html

$ sudo chown  $user:$user -R /var/www/site2.monserver.com/html

Nous venons de  créer les répertoires pour recevoir nos fichiers et en même temps on assigne les droits de l’utilisateur au répertoire pour pouvoir y éditer facilement nos fichiers.Attention à ne pas vous connecter en tant que root.

Création du contenu

Créons  un fichier index.html dans le répertoire  html de site1.(Chacun y vas avec son éditeur favori )

$ emacs  /var/www/site1.monserver.com/html/index.html

mettons le contenu.

<html>
    <head>
     <title>Site_1</title>
    </head>
    <body>
     <h1>Hello world!!! bienvenue sur mon <strong>Mon site1</strong></h1>
    </body>
</html>

Sauvegarder  puis fermer le fichier et  Faire la même chose pour site2.

Maintenant que nous avons nos contenus nous pouvons  commencer à dire à Nginx comment il va les servir  à nos visiteurs.Et pour ce faire nous allons créer ce qu’on appelle des « server block ».Par défaut la configuration de Nginx vient avec un seul « server block »  et le fichier le contenant ne nomme default dans le répertoire /etc/nginx/sites-avalaible.

Creation des fichiers des « server block »

Comme  je l’ai dit ci-dessus nous allons créer un server block pour notre site1 d’abord en copiant le server block par défaut  de nginx.

$ sudo cp /etc/nginx/sites-available/default  /etc/nginx/sites-available/site1

Maintenant ouvrons le fichier  site1

$ sudo emacs  /etc/nginx/sites-available/site1

Ignorer toutes les lignes en commentaire notre fichier devrait ressembler à ca

server {
listen 80 ;
listen [::]:80 ;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/site1.monserver.com/html;

# Add index.php to the list if you are using PHP
index index.html index.htm ;

server_name site1.monserver.com;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

Sauvegarder votre ficher site1  et refaite la même chose chose pour site2.Et pour faire simple faites juste une copie de site1 vers site 2

$ sudo cp /etc/nginx/sites-available/site1  /etc/nginx/sites-available/site2

Voila maintenant éditer votre ficher site2 en mettant les valeurs correctes dans  root et server_name

Mettant que tous est presque fini nous allons éditer notre fichier hosts et ajouter les correspondances adresse IP et  noms de domaines

$  emacs /etc/hosts
x.x.x.x         site1.monserver.com

x.x.x.x         site2.monserver.com

remplacer les x.x.x.x par l’adresse IP de votre serveur.pour ce tutoriel comme je suis en local sur ma machine l’adresse IP sera 127.0.0.1.

Ainsi l’étape finale de notre configuration consiste à activer les blocs server  que nous avons crée.Donc nous allons créer des liens symboliques vers le répertoire sites-enable  que nginx lit toujours au démarrage.

$ sudo ln -s /etc/nginx/sites-available/site1 /etc/nginx/sites-enabled/

$ sudo ln -s /etc/nginx/sites-available/site2 /etc/nginx/sites-enabled/

Vérifions maintenant que tout se passe bien  avec la commande

$ sudo nginx -t

Si tout se passe bien nous devrons avoir quelque chose qui ressemble à ca

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Let’s test

Maintenant que tout est fini lançons les tests

$ curl  site1.monserver.com

<html>
<head>
<title> Site_1 </title>
</head>

<body>

<h1> Hello word!!! bienvenue sur mon <strong>Mon site1 <strong> </h1>

</body>

</html>
$ curl  site2.monserver.com

<html>
<head>
<title> Site_2 </title>
</head>

<body>

<h1> Hello word!!! bienvenue sur mon <strong>Mon site2 <strong> </h1>

</body>

</html>

Voila  maintenant  nous  savons héberger plusieurs sites dans un même serveur avec Nginx. Il n’y pas de limite pour les servers blocks vous pouvez en créer autant que vous voulez mais dépendant de la capacité de votre serveur bien sûr :-p .Dans un prochain tutoriel je montrerai comme faire tourner une application Python/Django avec uwsgi  et aussi comment faire tourner du php sur notre serveur.

Auteur :

je suis un passionné de Linux et des logiciels libres!

2 commentaires sur « Nginx et le multi-site ca vous dit ? »

Répondre à viktorianskiy Annuler la réponse.