Configuration du serveur proxy inversé Nginx sur Ubuntu/Debian
Un serveur proxy inversé est un type de serveur qui se trouve devant les serveurs Web et transmet les demandes du client (par exemple, navigateur Web) à ces serveurs Web. Les procurations inverses sont généralement installées pour augmenter la sécurité, les performances et la fiabilité. Ce tutoriel vous guidera tout au long du processus de configuration de Nginx, un serveur Web haute performance et hautement évolutif, en tant que proxy inverse sur un système exécutant Ubuntu ou Debian.
Dans ce tutoriel, vous apprendrez:
- Comment installer nginx et les packages nécessaires
- Comment configurer nginx comme proxy inverse avec SSL
- Comment générer des certificats SSL et sécuriser Nginx
- Comment tester et vérifier votre configuration Nginx
Installation et configuration initiale
Avant de configurer Nginx en tant que proxy inverse, il doit être installé avec d'autres packages nécessaires. Cette section couvrira le processus d'installation.
Mettez à jour votre système : Commencez par mettre à jour vos listes de packages et votre système.
$ sudo apt update && sudo apt upgradeinstaller nginx : installer nginx à l'aide du gestionnaire de package.
$ sudo apt install nginx
La mise à jour de votre système garantit que vous avez les derniers correctifs de sécurité et dépendances requis pour Nginx.
Une fois installé, le service NGINX doit démarrer automatiquement. Vous pouvez vérifier son statut avec Sudo SystemCTl Status Nginx .
Configuration de Nginx comme proxy inverse
Avec Nginx installé, l'étape suivante consiste à le configurer en tant que proxy inverse pour transférer les demandes à un ou plusieurs serveurs Web backend.
Configurez les paramètres de proxy : commencez par modifier le fichier de configuration NGINX pour établir les paramètres de proxy inverses.
$ sudo nano /etc/nginx/sites-available/defaultInsérez l'extrait de configuration suivant dans le bloc
serveur. Cette configuration transfère les demandes entrantes à un serveur backend fonctionnant sur le port 3000:location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }Cette configuration définit un bloc
Locationqui correspond à toutes les demandes (indiqué par «/»). La directiveproxy_passenvoie ces demandes au serveur backend spécifié. La directiveproxy_http_version 1.1spécifie HTTP/1.1 pour la connexion au serveur proxie. Les lignesproxy_set_headermodifient les en-têtes de demande transmises au serveur proxé:mise à niveauetConnexionLes en-têtes prennent en charge les connexions mises à niveau telles que les coloques Web, tandis que l'hôteL'en-tête conserve l'hôte d'origine demandée par le client. La directiveproxy_cache_bypassgarantit que le cache est contourné si la valeur de la variable$http_upgradeest non vide, en maintenant l'intégrité des mises à niveau et en garantissant la communication directe du serveur.Vous trouverez ci-dessous un exemple complet de la façon dont votre fichier
/etc/nginx/sites disponible/par défautpeut sembler, qui comprend cette configuration dans une configuration HTTPS sécurisée:server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/ssl/certs/your_ssl_certificate.crt; ssl_certificate_key /etc/ssl/private/your_private_key.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } access_log /var/log/nginx/yourdomain_access.log; error_log /var/log/nginx/yourdomain_error.log; }Pour générer un certificat SSL pour cette configuration à l'aide de Let’s Encrypt, vous pouvez utiliser l'outil CERTBOT. Exécutez les commandes suivantes pour installer CERTBOT et générer des certificats:
$ sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comL'exécution de ces commandes incitera à CERTBOT pour modifier automatiquement votre configuration NGINX, en remplaçant les chemins de temps vers le certificat SSL et la clé par les chemins de temps vers les nouveaux certificats qu'il génère. Il s'agit d'un processus automatisé qui ajuste votre configuration Nginx pour utiliser les certificats Let’s Encrypt, en veillant à ce qu'ils soient renouvelés automatiquement avant d'expirer. Si vous avez précédemment spécifié des chemins de certificats auto-signés ou d'autres certificats SSL dans votre configuration, CERTBOT les écrasera avec les nouveaux chemins de certificat de confiance.
Si vous préférez utiliser un certificat SSL auto-signé au lieu d'en obtenir un de Let’s Encrypt, vous pouvez en générer un avec OpenSSL. Cette approche est particulièrement utile pour les tests ou l'utilisation interne. Exécutez la commande suivante pour générer un certificat auto-signé et une clé:$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/your_private_key.key -out /etc/ssl/certs/your_ssl_certificate.crt -subj "/CN=*.yourdomain.com"Valider votre configuration Nginx :
$ sudo nginx -tCette commande vérifie les erreurs de syntaxe et confirme si le fichier de configuration est correct, prêt pour le rechargement du service.
Recharger nginx : Si le test de configuration est réussi, rechargez nginx pour appliquer les modifications.
$ sudo systemctl reload nginxTestez votre configuration : Vérifiez que le proxy inverse fonctionne correctement en accédant à votre domaine dans un navigateur Web ou en utilisant un outil comme
curl.$ curl -I http://yourdomain.com
Cette commande crée une clé RSA et un certificat valide pour 365 jours, avec le nom commun «* .yourdomain.com» pour couvrir tous les sous-domaines de votre domaine. Le certificat et la clé sont stockés aux emplacements désignés. Gardez à l'esprit que ce certificat est auto-signé, les navigateurs peuvent présenter un avertissement quant à la fiabilité du certificat lorsque les utilisateurs accédaient à votre site.
Le rechargement applique toutes les modifications de configuration sans perturber les connexions en cours.
Cette commande doit retourner les en-têtes HTTP du serveur backend, confirmant que le proxy inversé est actif et opérationnel.
Conclusion
La configuration de Nginx en tant que proxy inverse sur Ubuntu ou Debian améliore la sécurité et l'efficacité de votre serveur. En suivant ces étapes, vous avez appris à installer Nginx, à le configurer comme un proxy inversé et à gérer son service. Vous pouvez maintenant étendre votre configuration en ajoutant un chiffrement SSL/TLS ou en optimisant les paramètres de cache pour améliorer les performances.
