Comment installer Nginx avec des hôtes virtuels et un certificat SSL

Comment installer Nginx avec des hôtes virtuels et un certificat SSL

Nginx (court pour Moteur-x) est un HTTP et un serveur proxy HTTP et proxy inversé gratuit, puissant, puissant, haute performance et évolutif, un serveur proxy TCP / UDP standard et standard. Il est facile à utiliser et à configurer, avec un langage de configuration simple. Nginx est désormais le logiciel de serveur Web préféré pour alimenter les sites fortement chargés, en raison de son évolutivité et de ses performances.

Dans cet article, discutera de la façon d'utiliser Nginx comme serveur HTTP, de le configurer pour servir le contenu Web et de configurer des hôtes virtuels basés sur le nom, et de créer et d'installer SSL pour les transmissions de données sécurisées, y compris un certificat auto-signé sur Ubuntu et CentOS.

Comment installer le serveur Web Nginx

Démarrez d'abord par installer le package Nginx à partir des référentiels officiels à l'aide de votre gestionnaire de packages comme indiqué.

------------ Sur Ubuntu ------------ $ sudo apt mise à jour $ sudo apt install nginx ------------ Sur Centos ------------ $ sudo yum Update $ sudo yum installer epel-libérer $ sudo yum install nginx 

Une fois le package Nginx installé, vous devez démarrer le service pour l'instant, lui permettre de démarrer automatiquement à l'heure du démarrage et d'afficher son état, en utilisant les commandes suivantes. Notez que sur Ubuntu, il doit être démarré et activé automatiquement pendant que le package est préconfiguré.

$ sudo systemctl start nginx $ sudo systemctl activer nginx $ sudo systemctl status nginx 
Démarrer et vérifier l'état de Nginx

À ce stade, le serveur Web Nginx doit être opérationnel, vous pouvez vérifier l'état avec la commande netStat.

$ sudo netstat -tlpn | grep nginx 
Vérifier l'état du port NGINX

Si votre système a un pare-feu activé, vous devez ouvrir le port 80 et 443 autoriser Http et Https trafic respectivement, à travers elle, en fonctionnant.

------------ Sur Centos ------------ $ sudo Firewall-Cmd - Permanent --Add-Port = 80 / TCP $ sudo Firewall-Cmd - Permanent --Add-Port = 443 / TCP $ sudo Firewall-Cmd - Reload ------------ Sur Ubuntu ------------ $ sudo ufw permettre 80 / tcp $ sudo ufw permettre 443 / tcp $ sudo ufw rechargement 

La méthode idéale pour tester l'installation de Nginx et vérifier s'il est en cours d'exécution et en mesure de servir les pages Web est d'ouvrir un navigateur Web et de pointer vers l'IP du serveur.

http: // your-ip-address ou http: // your-domain.com 

Une installation de travail doit être indiquée par l'écran suivant.

Vérifiez la page Web de Nginx

Comment configurer le serveur Web Nginx

Les fichiers de configuration de Nginx sont situés dans le répertoire / etc / nginx et le fichier de configuration global est situé à / etc / nginx / nginx.confli sur Centos et Ubuntu.

Nginx est composé de modules contrôlés par diverses options de configuration, appelées directives. UN directif peut être simple (dans le nom de formulaire et les valeurs terminées avec un ;) ou bloc (a des instructions supplémentaires ci-jointes en utilisant ). Et une directive de bloc qui contient d'autres directives est appelée un contexte.

Toutes les directives sont expliquées de manière globale dans la documentation NGINX sur le site Web du projet. Vous pouvez vous y référer pour plus d'informations.

Comment servir le contenu statique à l'aide de Nginx en mode autonome

Au niveau fondamental, Nginx peut être utilisé pour servir un contenu statique tel que les fichiers HTML et multimédias, en mode autonome, où seul le bloc de serveur par défaut est utilisé (analogue à Apache où aucun hôte virtuel n'a été configuré).

Nous commencerons par expliquer brièvement la structure de configuration dans le fichier de configuration principal.

 $ sudo vim / etc / nginx / nginx.confli 

Si vous examinez ce fichier de configuration Nginx, la structure de configuration doit apparaître comme suit et ceci est appelé contexte principal, qui contient de nombreuses autres directives simples et de bloc. Tout le trafic Web est géré dans le contexte HTTP.

utilisateur nginx; wearch_processs 1;… error_log / var / log / nginx / error.Journal averti; pid / var / run / nginx.pid;… événements … http server … . … 

Ce qui suit est un exemple de configuration principale Nginx (/ etc / nginx / nginx.confli) Fichier, où le bloc HTTP ci-dessus contient une directive inclue qui indique à Nginx où trouver des fichiers de configuration du site Web (configurations d'hôte virtuelles).

Fichier de configuration Nginx
utilisateur www-data; wearch_prosses auto; pid / run / nginx.pid; Événements Worker_Connections 768; # multi_accept sur;  http include / etc / nginx / mime.les types; Default_type Application / Octet-Stream; inclure / etc / nginx / mime.les types; Default_type Application / Octet-Stream; Access_log / var / log / nginx / access.enregistrer; error_log / var / log / nginx / error.enregistrer; SendFile sur; #TCP_NOPUSH ON; keepalive_timeout 65; #gzip sur; inclure / etc / nginx / confre.d/*.conf;  

Notez que sur Ubuntu, Vous trouverez également une directive supplémentaire d'inclusion (include / etc / nginx / sites compatible / *;), où le répertoire / etc / nginx / sites compatible / Store SymLinks aux fichiers de configuration des sites Web créés dans / etc / nginx / sites-disponible /, Pour permettre les sites. Et la suppression d'un lien symbolique désactive ce site particulier.

En fonction de votre source d'installation, vous trouverez le fichier de configuration du site Web par défaut à / etc / nginx / confre.d / par défaut.confli (Si vous avez installé à partir de officiel Nginx référentiel et Epel) ou / etc / nginx / sites compatible / par défaut (Si vous avez installé des référentiels Ubuntu).

Ceci est notre exemple de bloc de serveur Nginx par défaut situé à / etc / nginx / confre.d / par défaut.confli sur le système de test.

server écouter 80 default_server; écouter [::]: 80 default_server; nom du serveur _; root / var / www / html /; Index index.html; Emplacement / try_files $ uri $ uri / = 404;  

Une brève explication des directives dans la configuration ci-dessus:

  • écouter: spécifie le port Le serveur écoute.
  • nom du serveur: Définit le nom du serveur qui peut être des noms exacts, des noms génériques ou des expressions régulières.
  • racine: Spécifie le répertoire à partir duquel Nginx servira des pages Web et d'autres documents.
  • indice: Spécifie le (s) type (s) des fichiers d'index à servir.
  • emplacement: utilisé pour traiter les demandes de fichiers et de dossiers spécifiques.

À partir d'un navigateur Web, lorsque vous pointez vers le serveur en utilisant le nom d'hôte LocalHost ou son adresse IP, il traite la demande et sert le fichier / var / www / html / index.html, et enregistre immédiatement l'événement à son journal d'accès (/ var / log / nginx / accès.enregistrer) avec un 200 (OK) Réponse. En cas d'erreur (événement échoué), il enregistre le message dans le journal d'erreur (/ var / log / nginx / error.enregistrer).

Tester le site par défaut de Nginx

Pour en savoir plus sur la connexion Nginx, Vous pouvez vous référer à la configuration des formats de journal d'accès ou d'erreur personnalisés dans Nginx.

Au lieu d'utiliser les fichiers journaux par défaut, vous pouvez définir des fichiers journaux personnalisés pour différents sites Web, comme nous allons examiner plus loin, sous la section «Configuration des hôtes virtuels basés sur le nom (blocs de serveurs)».

Comment restreindre l'accès à une page Web avec nginx

Afin de restreindre l'accès à votre site Web / application ou à certaines parties, vous pouvez configurer l'authentification HTTP de base. Cela peut être utilisé essentiellement pour restreindre l'accès à l'ensemble du serveur HTTP, des blocs de serveur individuels ou des blocs d'emplacement.

Commencez par créer un fichier qui stockera vos informations d'identification d'accès (Identifiant Mot de passe) en utilisant le htpasswd utilitaire.

 $ yum install httpd-tools # rhel / centos $ sudo apt install apache2-utils # debian / ubuntu 

Par exemple, ajoutons l'administrateur utilisateur à cette liste (vous pouvez ajouter autant d'utilisateurs que possible), où le -c L'option est utilisée pour spécifier le fichier de mot de passe et le -B Pour crypter le mot de passe. Une fois que vous avez frappé [Entrer], Il vous sera demandé de saisir le mot de passe des utilisateurs:

$ sudo htpasswd -bc / etc / nginx / confr.d/.admin htpasswd 

Ensuite, attribuez les autorisations et la propriété appropriées au fichier de mot de passe (remplacez l'utilisateur et le groupe Nginx par www-data sur Ubuntu).

$ sudo chmod 640 / etc / nginx / confr.d/.htpasswd $ sudo chown nginx: nginx / etc / nginx / confre.d/.htpasswd 

Comme nous l'avons mentionné plus tôt, vous pouvez restreindre l'accès à votre serveur Web, un seul site Web (en utilisant son bloc de serveur) ou un répertoire ou un fichier spécifique. Deux directives utiles peuvent être utilisées pour y parvenir:

  • auth_basic - Active la validation du nom d'utilisateur et du mot de passe à l'aide du «Authentification de base HTTP”Protocole.
  • auth_basic_user_file - Spécifie le fichier des informations d'identification.

Par exemple, nous montrerons comment protéger le répertoire de mot de passe / var / www / html / protégé.

server écouter 80 default_server; server_name localhost; root / var / www / html /; Index index.html; Emplacement / try_files $ uri $ uri / = 404;  Emplacement / Protégé / Auth_basic "Accès restreint!"; auth_basic_user_file / etc / nginx / confr.d/.htpasswd;  

Maintenant, enregistrez les modifications et redémarrez le service Nginx.

$ sudo systemctl redémarrer nginx 

La prochaine fois que vous pointez votre navigateur vers le répertoire ci-dessus (http: // localhost / protégé) Il vous sera demandé de saisir vos informations d'identification de connexion (nom d'utilisateur administrer et le mot de passe choisi).

Une connexion réussie vous permet d'accéder au contenu du répertoire, sinon vous obtiendrez un "401 Autorisation requise" erreur.

Comment configurer des hôtes virtuels basés sur le nom (blocs de serveurs) dans Nginx

Le contexte du serveur permet de stocker plusieurs domaines / sites de plusieurs domaines / sites à partir de la même machine physique ou serveur privé virtuel (VPS). Plusieurs blocs de serveurs (représentant des hôtes virtuels) peuvent être déclarés dans le contexte HTTP pour chaque site / domaine. Nginx décide quel serveur traite une demande en fonction de l'en-tête de demande qu'il reçoit.

Nous allons démontrer ce concept en utilisant les domaines factice suivants, chacun situé dans le répertoire spécifié:

  • weetecmint.com - / var / www / html / weetecmint.com /
  • welovelinux.com - / var / www / html / welovelinux.com /

Ensuite, affectez les autorisations appropriées sur le répertoire pour chaque site.

$ sudo chmod -r 755 / var / www / html / weetetecmint.com / public_html $ sudo chmod -r 755 / var / www / html / welovelinux.com / public_html 

Maintenant, créez un échantillon indice.html fichier à l'intérieur de chacun public_html annuaire.

  www.weetecmint.com   

Ceci est la page d'index de www.weetecmint.com

Ensuite, créez les fichiers de configuration de bloc de serveur pour chaque site à l'intérieur du / etc / httpd / confre.d annuaire.

$ sudo vi / etc / nginx / confre.d / weetetecmint.com.confr $ sudo vi / etc / nginx / confr.d / welovelinux.com.confli 

Ajouter la déclaration de blocs de serveur suivant dans le weetecmint.com.confli déposer.

weetecmint.com.confli
Server écouter 80; server_name weetetecmint.com; root / var / www / html / weetetecmint.com / public_html; Index index.html; Emplacement / try_files $ uri $ uri / = 404;  

Ensuite, ajoutez la déclaration de bloc de serveur suivant dans le welovelinux.com.confli déposer.

welovelinux.com.confli
Server écouter 80; server_name welovelinux.com; root / var / www / html / welovelinux.com / public_html; Index index.html; Emplacement / try_files $ uri $ uri / = 404;  

Pour appliquer les modifications récentes, redémarrez le serveur Web Nginx.

$ sudo systemctl redémarrer nginx 

et pointer votre serveur Web vers les adresses ci-dessus devrait vous faire voir les pages principales des domaines factice.

http: // weetecmint.com http: // welovelinux.com 
Tester les sites Web de Nginx Virtual Hosts

Important: Si tu as Selinux activé, sa configuration par défaut ne permet pas à Nginx d'accéder à des fichiers en dehors des emplacements autorisés bien connus (tels que / etc / nginx pour les configurations, / var / log / nginx pour les journaux, / var / www / html pour les fichiers Web, etc.).

Vous pouvez gérer cela en désactivant Selinux ou en définissant le contexte de sécurité correct. Pour plus d'informations, reportez-vous à ce guide: Utilisation de Nginx et Nginx Plus avec Selinux sur le site Web de Nginx Plus.

Comment installer et configurer SSL avec nginx

SSL Les certificats aident à activer Secure HTTP (Https) sur votre site, ce qui est essentiel pour établir une connexion fiable / sécurisée entre les utilisateurs finaux et votre serveur en chiffrant les informations qui sont transmises, depuis ou dans votre site.

Nous couvrirons comment créer et installer un certificat auto-signé et générer une demande de signature de certificat (RSE) pour acquérir un certificat SSL auprès d'une autorité de certificat (Californie), à utiliser avec nginx.

Les certificats auto-signés sont gratuits à créer et sont pratiquement bons à aller à des fins de test et aux services internes LAN uniquement. Pour les serveurs orientés publics, il est fortement recommandé d'utiliser un certificat délivré par un CA (par exemple let's crypt) pour maintenir son authenticité.

Pour créer un certificat auto-signé, créez d'abord un répertoire où vos certificats seront stockés.

$ sudo mkdir / etc / nginx / ssl-certs / 

Générez ensuite votre certificat auto-signé et la clé en utilisant le OpenSSL outil de ligne de commande.

$ sudo openssl req -x509 -Nodes -Days 365 -Newkey RSA: 2048 -Keyout / etc / nginx / ssl-certs / nginx.clé -out / etc / nginx / ssl-certs / nginx.CRT 

Décrivons brièvement les options utilisées dans la commande ci-dessus:

  • req -x509 - montre que nous créons un certificat x509.
  • -NODES (NON DES) - signifie «ne cryptant pas la clé».
  • -jours 365 - Spécifie le nombre de jours pour lesquels le certificat sera valable.
  • -Newkey RSA: 2048 - Spécifie que la clé générée à l'aide de l'algorithme RSA doit être 2048 bits.
  • -Keyout / etc / nginx / ssl-certs / nginx.clé - Spécifie le chemin complet de la clé RSA.
  • -out / etc / nginx / ssl-certs / nginx.CRT - Spécifie le chemin complet du certificat.
Créer un certificat SSL et une clé pour Nginx

Ensuite, ouvrez votre fichier de configuration d'hôte virtuel et ajoutez les lignes suivantes à une déclaration de bloc de serveur écoute sur le port 443. Nous allons tester avec le fichier hôte virtuel / etc / nginx / confre.d / weetetecmint.com.confli.

$ sudo vi / etc / nginx / confre.d / weetetecmint.com.confli 

Puis ajoutez la directive SSL au fichier de configuration Nginx, il doit ressembler à ci-dessous.

Server écouter 80; Écoutez [::]: 80; Écoutez 443 SSL; Écoutez [::]: 443 SSL; ssl on; ssl_certificate / etc / nginx / ssl-certs / nginx.CRT; ssl_trusted_certificate / etc / nginx / ssl-certs / nginx.CRT; ssl_certificate_key / etc / nginx / ssl-certs / nginx.clé; server_name weetetecmint.com; root / var / www / html / weetetecmint.com / public_html; Index index.html; Emplacement / try_files $ uri $ uri / = 404;  

Redémarrez maintenant le nginx et pointez votre navigateur vers l'adresse suivante.

https: // www.weetecmint.com 
Vérifiez le site Web de Nginx SSL

Si vous souhaitez acheter un certificat SSL auprès d'un CA, vous devez générer une demande de signature de certificat (RSE) comme indiqué.

$ sudo openssl req -newkey rsa: 2048 -Nodes -Keyout / etc / nginx / ssl-certs / exemple.com.clé -out / etc / nginx / ssl-certs / exemple.com.RSE 

Vous pouvez également créer un RSE à partir d'une clé privée existante.

$ sudo openssl req -key / etc / nginx / ssl-certs / exemple.com.Key -new -out / etc / nginx / ssl-certs / exemple.com.RSE 

Ensuite, vous devez envoyer le RSE qui est généré pour un Californie Pour demander l'émission d'un certificat SSL signé par CA. Une fois que vous avez reçu votre certificat de l'AC, vous pouvez le configurer comme indiqué ci-dessus.

Lire aussi: Le guide ultime pour sécuriser, durcir et améliorer les performances du serveur Web Nginx

Résumé

Dans cet article, nous avons expliqué comment installer et configurer Nginx; couvert comment configurer l'hébergement virtuel basé sur le nom avec SSL pour sécuriser les transmissions de données entre le serveur Web et un client.

Si vous avez connu des revers pendant votre processus d'installation / configuration Nginx ou avez des questions ou des commentaires, utilisez le formulaire de rétroaction ci-dessous pour nous joindre.