introduction
Nginx est l’un des serveurs Web les plus populaires au monde, connu pour son utilisation fréquente en tant qu’équilibreur de charge et proxy inverse. C’est plus respectueux des ressources qu’Apache, et bon nombre des sites Internet les plus importants et les plus soumis à la traite font de Nginx l’utilisation de leur contenu.
Dans ce guide, nous montrerons comment installer Nginx sur un serveur FreeBSD 11.2.
Conditions préalables
Avant de commencer ce guide, vous devez avoir accès à un serveur exécutant FreeBSD. Ce guide a été spécialement conçu pour un serveur exécutant FreeBSD 11.2, mais il devrait également fonctionner sur les anciennes versions prises en charge du système d’exploitation.
Si vous débutez avec FreeBSD, vous pouvez trouver utile de personnaliser ce serveur en suivant les instructions: https://www.digitalocean.com/community/tutorials/how-to-get-started-with-freebsd] .
De plus, si vous prévoyez de configurer un nom de domaine pour ce serveur, vous aurez besoin des éléments suivants:
-
Un nom de domaine enregistré que vous possédez et contrôlez. Si vous ne possédez pas déjà un nom de domaine enregistré, vous pouvez en enregistrer un auprès d’un des nombreux bureaux d’enregistrement de noms de domaine (par exemple, Namecheap, GoDaddy, etc.).
-
Un DNS * Un enregistrement * qui pointe votre domaine vers l’adresse IP publique de votre serveur. Vous pouvez suivre cien tutoriel sur les noms d’hôtes pour savoir comment les ajouter.
Étape 1 - Installation de Nginx
Pour commencer, nous allons installer Nginx en utilisant + pkg +
, l’outil intégré de gestion des paquets binaires de FreeBSD. La commande suivante mettra à jour votre copie locale des packages disponibles, puis installera le package + nginx +
:
sudo pkg install nginx
Si c’est la première fois que vous utilisez + pkg +
, il vous sera demandé de confirmer que vous lui permettez de démarrer lui-même. Pour ce faire, appuyez sur + y +
puis + ENTER +
. Puis, lorsque vous y êtes invité, confirmez que vous approuvez l’installation du paquetage + nginx +
en appuyant à nouveau sur les touches + y +
puis + ENTER +
.
Si vous utilisez le shell + csh +
ou + + tcsh +
, assurez-vous d’exécuter la commande + rehash +
. Cela rend le shell conscient des nouvelles applications que vous avez installées:
rehash
Nginx est maintenant installé sur votre serveur, mais il n’est pas encore en cours d’exécution. Dans l’étape suivante, nous allons permettre à Nginx de commencer à s’exécuter à chaque démarrage du serveur et de le démarrer pour cette session, ainsi que de suivre le processus de sécurisation du serveur en configurant un pare-feu avec IPFW.
Étape 2 - Activer le service Nginx et configurer un pare-feu avec IPFW
Pour que FreeBSD lance Nginx en tant que service conventionnel, vous devez indiquer à FreeBSD que vous souhaitez l’activer. Cela vous permettra de le gérer comme n’importe quel autre service, plutôt que comme une application autonome, et configurera également FreeBSD pour le démarrer automatiquement au démarrage.
Pour ce faire, vous devez d’abord connaître le paramètre + rc +
correct à définir pour le service + nginx +
. + rc +
est un utilitaire FreeBSD qui contrôle les processus d’amorçage automatique du système. Les scripts de chaque service disponible sur le système se trouvent dans le répertoire + / usr / local / etc / rc.d +
. Celles-ci définissent les paramètres utilisés pour activer chaque service à l’aide de la variable + rcvar +
. Nous pouvons voir ce que chaque service + rcvar +
est défini en tapant:
grep rcvar /usr/local/etc/rc.d/*
Une fois installée, cette commande affichera une liste similaire à celle-ci:
Output/usr/local/etc/rc.d/cloudconfig:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudfinal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinit:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinitlocal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/nginx:rcvar=
/usr/local/etc/rc.d/rsyncd:rcvar=rsyncd_enable
Le paramètre que vous devez définir pour le service + nginx +
est mis en surbrillance ici dans cette sortie. Le nom du script lui-même - le dernier composant du chemin avant les deux points - est également utile à connaître, car c’est le nom que FreeBSD utilise pour faire référence au service.
Pour activer le service + nginx +
, vous devez ajouter son + rcvar +
au fichier + rc.conf +
, qui contient les informations de configuration système globale référencées par les scripts de démarrage. Utilisez votre éditeur préféré pour ouvrir le fichier + / etc / rc.conf
avec les privilèges` + sudo`. Ici, nous allons utiliser + ee +
:
sudo ee /etc/rc.conf
En haut du fichier, quelques paramètres + rcvar +
sont déjà en place. Ajoutez le paramètre + nginx_enable +
+ + rcvar +
sous ceux-ci et réglez-le sur " YES "
:
/etc/rc.conf
. . .
sshd_enable="YES"
. . .
Toujours dans le fichier + rc.conf +
, nous ajouterons quelques directives supplémentaires pour activer et configurer un pare-feu IPFW. IPFW est un pare-feu dynamique écrit pour FreeBSD. Il fournit une syntaxe puissante qui vous permet de personnaliser les règles de sécurité pour la plupart des cas d’utilisation.
Directement sous le paramètre + nginx_enable +
que vous venez d’ajouter, ajoutez les lignes en surbrillance suivantes:
/etc/rc.conf
. . .
nginx_enable="YES"
Voici ce que chacune de ces directives et leurs paramètres font:
-
+ firewall_enable =" YES "+
- La définition de cette directive sur" YES "
permet au pare-feu de démarrer à chaque démarrage du serveur. -
+ firewall_type =" workstation "+
- FreeBSD fournit plusieurs types de pare-feu par défaut, chacun ayant une configuration légèrement différente. En déclarant le type+ workstation +
, le pare-feu ne protégera ce serveur qu’à l’aide de règles avec état. -
+ firewall_myservices =" 22 / tcp 80 / tcp "+
- La directive+ firewall_myservices +
vous permet de répertorier les ports TCP que vous souhaitez autoriser à travers le pare-feu. Dans cet exemple, nous spécifions les ports+ 22 +
et+ 80 +
pour permettre l’accès SSH et HTTP au serveur, respectivement. -
+ firewall_allowservices =" any "+
- Ceci permet à une machine depuis n’importe quelle adresse IP de communiquer via les ports spécifiés dans la directive+ firewall_myservices +
.
Après avoir ajouté ces lignes, enregistrez le fichier et fermez l’éditeur en appuyant sur + CTRL + C +
, en tapant + exit +
, puis en appuyant sur + ENTER +
.
Ensuite, démarrez le service de pare-feu + ipfw +
. Étant donné que c’est la première fois que vous démarrez le pare-feu sur ce serveur, il est possible que cela provoque le blocage de votre serveur, le rendant inaccessible via SSH. La commande + nohup +
suivante - qui signifie «pas de blocage» - lancera le pare-feu tout en empêchant le blocage et redirigera également la sortie standard et l’erreur vers un fichier journal temporaire:
sudo nohup service ipfw start >/tmp/ipfw.log 2>&1
Si vous utilisez les shells + csh +
ou + tcsh +
, cependant, cette redirection entraînera une redirection de sortie + ambiguë. +
Dans votre sortie. Si vous utilisez l’un de ces shells, exécutez ce qui suit pour lancer + ipfw +
:
sudo nohup service ipfw start >&/tmp/ipfw.log
Ensuite, démarrez le service + nginx
sudo service nginx start
Ensuite, pour vérifier que Nginx est capable de servir le contenu correctement, entrez l’adresse IP publique de votre serveur dans la barre d’URL de votre navigateur Web préféré:
http://
Si tout fonctionne correctement, vous verrez la page de destination par défaut de Nginx:
image: https: //assets.digitalocean.com/freebsd/nginx/nginx_default_page.png [Page par défaut de Nginx]
Cela montre que Nginx est installé et fonctionne correctement et qu’il est autorisé à passer à travers le pare-feu comme prévu. Toutefois, il reste quelques modifications à apporter à la configuration pour que cette dernière fonctionne avec des paramètres autres que ceux par défaut ou serve le contenu en utilisant un nom de domaine.
Étape 3 - Configuration d’un bloc de serveur
Lors de l’utilisation du serveur Web Nginx, server blocks (similaire aux hôtes virtuels dans Apache) peut être utilisé pour encapsuler les détails de la configuration et héberger plusieurs domaines à partir d’un seul serveur. Nous allons configurer un domaine appelé * exemple.com *, mais vous devez * le remplacer par votre propre nom de domaine *. Pour en savoir plus sur la configuration d’un nom de domaine avec DigitalOcean, consultez notre Introduction to DigitalOcean DNS.
Nginx sur FreeBSD 11.2 a un bloc de serveur activé par défaut qui est configuré pour servir les documents à partir d’un répertoire situé dans + / usr / local / www / nginx +
. Bien que cela fonctionne bien pour un seul site, cela peut devenir lourd si vous hébergez plusieurs sites. Au lieu de modifier + / usr / local / www / nginx +
, créons une structure de répertoire dans + / usr / local / www +
pour notre site * example.com *.
Créez le répertoire pour * exemple.com * comme suit, en utilisant l’indicateur + -p +
pour créer les répertoires parents nécessaires:
sudo mkdir -p /usr/local/www//html
Ensuite, attribuez la propriété du répertoire à l’utilisateur * www *, le profil utilisateur d’exécution par défaut de Nginx:
sudo chown -R www:www /usr/local/www/
Les permissions de votre racine web doivent être correctes si vous n’avez pas modifié votre valeur + umask +
, mais vous pouvez en être sûr en tapant:
sudo chmod -R 755 /usr/local/www/
Ensuite, créez un exemple de page + index.html
en utilisant` + ee + `:
sudo ee /usr/local/www//html/index.html
À l’intérieur, ajoutez l’exemple HTML suivant:
/usr/local/www/example.com/html/index.html
<html>
<head>
<title>Welcome to !</title>
</head>
<body>
<h1>Success! The server block is working!</h1>
</body>
</html>
Enregistrez et fermez le fichier lorsque vous avez terminé.
Pour que Nginx puisse diffuser ce contenu, il est nécessaire de créer un bloc de serveur avec les directives appropriées. Ouvrez le fichier de configuration principal de Nginx. Par défaut, cela se trouve dans le répertoire + / usr / local / etc / nginx / +
:
sudo ee /usr/local/etc/nginx/nginx.conf
Lorsque vous ouvrez le fichier pour la première fois, les éléments suivants s’affichent tout en haut:
/usr/local/etc/nginx/nginx.conf
#user nobody;
worker_processes 1;
. . .
Décommentez la directive + utilisateur +
en supprimant le signe dièse (+ # +
) puis changez l’utilisateur de * nobody * en * www *. Puis mettez à jour la directive + worker_processes +
qui vous permet de sélectionner le nombre de processus de travail que Nginx utilisera. La valeur optimale à entrer ici n’est pas toujours évidente ni facile à trouver. Si vous le définissez sur + auto +
, Nginx le configurera à un ouvrier par cœur de processeur, ce qui sera suffisant dans la plupart des cas:
/usr/local/etc/nginx/nginx.conf
user ;
worker_processes ;
. . .
Ensuite, faites défiler jusqu’au bloc + serveur +
. Avec tous les commentaires supprimés, cela ressemblera à ceci:
/usr/local/etc/nginx/nginx.conf
. . .
server {
listen 80;
server_name localhost;
location / {
root /usr/local/www/nginx;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
Supprimez tout le bloc de serveur, y compris toutes les lignes commentées, et remplacez-le par le contenu suivant:
/usr/local/etc/nginx/nginx.conf
. . .
server {
access_log /var/log/nginx/.access.log;
error_log /var/log/nginx/.error.log;
listen 80;
server_name www.;
location / {
root /usr/local/www//html;
index index.html index.htm;
}
}
. . .
Voici ce que font les directives de ce bloc serveur:
-
+ access_log +
: Cette directive définit l’emplacement des journaux d’accès du serveur. -
+ error_log +
: Ceci définit le fichier où Nginx écrira ses journaux d’erreur. -
+ listen +
: La directive+ listen +
déclare le port sur lequel Nginx doit écouter. Dans ce cas, nous le configurons sur le port+ 80 +
afin qu’il puisse écouter le trafic HTTP. -
+ nom_serveur +
: Ici, pointez Nginx sur votre nom de domaine et sur les alias que vous avez pour cela. Si vous n’avez pas de nom de domaine, pointez Nginx sur l’adresse IP publique de votre serveur. -
+ root +
: Ceci définit la racine du document de site Web, que vous avez créée précédemment dans cette étape. -
+ index +
: Cette directive définit les fichiers qui seront utilisés comme index et dans quel ordre ils doivent être vérifiés.
Tous ensemble, avec les commentaires supprimés, le fichier ressemblera à ceci:
/usr/local/letc/nginx/nginx.conf
user www;
worker_processes ;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
access_log /var/log/nginx/.access.log;
error_log /var/log/nginx/.error.log;
listen 80;
server_name www.;
location / {
root /usr/local/www/;
index index.html index.htm;
}
}
}
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, testez les erreurs de syntaxe dans votre fichier de configuration en tapant:
sudo nginx -t
Si votre fichier de configuration ne contient aucune erreur de syntaxe détectable, le résultat suivant s’affiche:
Outputnginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Si la commande ci-dessus renvoie des erreurs, rouvrez le fichier de configuration Nginx à l’emplacement où l’erreur a été détectée et essayez de résoudre le problème.
Lorsque votre configuration est correctement vérifiée, rechargez le service + nginx +
pour activer vos modifications:
sudo service nginx reload
Nginx devrait maintenant servir le contenu que vous avez configuré dans le fichier + index.html +
. Testez ceci en naviguant sur + http: // +
, où vous devriez voir quelque chose comme ça:
image: https: //assets.digitalocean.com/articles/nginx_server_block_1404/first_block.png [Premier bloc de serveur Nginx]
Enfin, nous passerons en revue quelques commandes vous permettant de gérer le service Nginx.
Étape 4 - Gestion du processus Nginx
Maintenant que votre serveur Web est opérationnel, passons en revue certaines commandes de gestion de base.
Pour arrêter votre serveur Web, tapez:
sudo service nginx stop
Pour démarrer le serveur Web quand il est arrêté, tapez:
sudo service nginx start
Pour arrêter puis redémarrer le service, tapez:
sudo service nginx restart
Si vous effectuez simplement des modifications de configuration, vous pouvez recharger Nginx sans interrompre aucune connexion. Pour ce faire, tapez:
sudo service nginx reload
Enfin, rappelez-vous qu’à l’étape 2 nous avons activé le service + nginx +
en ajoutant la directive + nginx_enable =" YES "+
au fichier + rc.conf +
. Si vous souhaitez désactiver le service + nginx +
pour l’empêcher de démarrer au démarrage du serveur, vous devez rouvrir ce fichier et supprimer cette ligne.
Conclusion
Vous avez maintenant un serveur Web Nginx entièrement fonctionnel installé sur votre ordinateur. À partir de là, vous pouvez chiffrer le trafic Web de votre serveur en activant HTTPS. Pour savoir comment faire cela, consultez Comment sécuriser Nginx avec Let Encrypt sur FreeBSD. Vous pouvez également installez et configurez MySQL et PHP qui, avec Nginx, vous donnerait une pile FEMP complète.