Hostwinds Tutoriels
Résultats de recherche pour:
Table des matières
Mots clés: Cloud Servers, SSL, VPS
Si vous exécutez une application Web sur un port privé (comme LocalHost: 3000), il n'est pas directement accessible sur Internet.L'un des moyens les plus efficaces d'exposer en toute sécurité l'application est de mettre un proxy inversé devant lui.
Nginx est un outil bien connu léger qui peut faire exactement cela - recevoir un trafic entrant et le transmettre à votre application - tout en gérant les HTTP avec un certificat SSL gratuit de Let's Encrypt.
Dans ce guide, vous apprendrez à:
Nouveau sur les serveurs Web?Découvrez notre explication sur Comment fonctionnent les serveurs Web.
UNE proxy inversé est un serveur qui se trouve entre vos utilisateurs et vos services backend.Au lieu que votre application écoute publiquement sur un port (comme 3000), Nginx reçoit d'abord le trafic, puis le transmet à l'application en arrière-plan.
Voici pourquoi cette approche est si utile:
Même si votre application peut déjà gérer le trafic Web, l'utilisation de Nginx comme proxy inverse simplifie souvent la configuration, améliore la flexibilité et augmente le contrôle.
Avant de commencer, assurez-vous d'avoir tout ce dont vous avez besoin:
A yourdomain.com → 123.123.123.123
A www.yourdomain.com → 123.123.123.123
La propagation peut prendre quelques minutes à quelques heures.
Vous ne savez pas comment configurer votre DNS?Voici Comment ajouter un enregistrement avec la plupart des hôtes de domaine.
Remarque: Si votre application n'est pas encore en cours d'exécution, ce n'est pas grave - vous pouvez toujours passer par la configuration et tester plus tard.
sudo apt update
sudo apt install nginx
Vérifiez ensuite qu'il fonctionne:
sudo systemctl status nginx
Vous devriez voir "actif (en cours d'exécution)".
sudo apt install certbot python3-certbot-nginx
Ce plugin permet de modifier automatiquement votre configuration Nginx lorsque vous demandez un certificat - aucune modification manuelle requise pour les configurations de base.
Vous avez un autre système d'exploitation?Suivez ce guide sur Comment installer, cryptons sur Fedora et Debian
Maintenant que votre système est prêt, la première étape réelle consiste à configurer Nginx pour écouter le trafic sur votre domaine et à le transmettre à votre application interne - c'est ce qui fait agir Nginx comme un proxy inverse.
Sans cette configuration, les utilisateurs essayant de visiter votre site Web appuyeraient sur une page vide ou l'écran de bienvenue Nginx par défaut.Vous devez dire explicitement Nginx:
Vous créerez un fichier de configuration pour votre domaine dans le répertoire disponible des sites de Nginx.Cela maintient les configurations organisées et facilite l'activation ou la désactivation des sites individuels.
sudo nano /etc/nginx/sites-available/yourdomain.com
Collez dans le bloc suivant, en ajustant le domaine et le port d'application au besoin:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
# Pass important headers to the backend
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Nginx utilise des liens symboliques dans le compatible avec les sites Répertoire pour activer les sites.Alors maintenant, vous créez un lien et recharger Nginx:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
Vérifiez les erreurs de syntaxe.Si tout semble bon:
sudo systemctl reload nginx
Votre proxy inversé est maintenant en direct - demande à http://yourdomain.com sera transmis à votre application sur le port 3000.
Avec le proxy inversé fonctionnant sur HTTP, l'étape suivante consiste à le sécuriser avec HTTPS.Cela ajoute du cryptage à toutes les communications entre vos utilisateurs et votre serveur - protégeant les informations d'identification de connexion, les demandes d'API, les données personnelles, etc.
Vous utiliserez Let's Encrypt, une autorité de certificat gratuite, et CERTBOT, qui automatise le processus.
Exécutez cette commande, en remplaçant les domaines par vos valeurs réelles:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Ce que cela fait:
Certbot Will:
Conseil: Si votre DNS n'est pas entièrement propagé ou que votre serveur Blocks Port 80, la validation échouera.Vous pouvez tester cela avec:
curl -I http://yourdomain.com
Pour mieux comprendre les ports, consultez notre guide sur Comment fonctionnent les ports du serveur Web.
Une fois le certificat terminé, votre configuration Nginx devrait inclure quelque chose comme ceci:
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
Vous devriez maintenant pouvoir visiter https://yourdomain.com et voir votre site avec un certificat SSL valide.
Si vous n'avez pas choisi l'option de redirection lors de la configuration de certificat, vous pouvez l'ajouter manuellement:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
Cela oblige tous les trafics HTTP à rediriger vers HTTPS, ce qui garantit que les utilisateurs n'utilisent pas accidentellement la version non sécurisée de votre site.
Une fois votre certificat SSL en place, vous pouvez affiner Nginx pour améliorer la sécurité et la compatibilité.Ces paramètres vont dans le bloc HTTPS Server.
Voici un exemple amélioré:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_session_tickets off;
Ces changements améliorent votre score de sécurité SSL et protègent les visiteurs contre les attaques de rétrogradation ou les choix de cryptage sans sécurité.
Optionnelle: Vous pouvez tester votre site avec SSL Labs pour voir comment votre configuration fonctionne et obtenir des suggestions d'amélioration spécifiques.
Pour un chiffrement encore plus fort, vous pouvez générer une touche Diffie-Hellman (DH) personnalisée.Cette étape est facultative, mais elle est souvent recommandée pour les environnements de production.
Exécutez cette commande pour générer un groupe DH 2048 bits:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Ajoutez ensuite la ligne suivante à votre bloc SSL Server:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Les paramètres Diffie-Hellman renforcent secret, ce qui signifie que même si votre clé privée est en quelque sorte compromise à l'avenir, les séances cryptées passées seront toujours sécurisées.
Il faut quelques minutes pour générer le groupe DH, mais c'est une étape unique et vaut la peine d'être fait pour une meilleure posture de sécurité.
Les certificats de crypte expirent tous les 90 jours.Heureusement, CERTBOT installe une minuterie de système qui vérifie deux fois par jour pour les certificats en raison de l'expiration et des renouvellements automatiquement.
Vous pouvez confirmer que la minuterie est active avec:
sudo systemctl list-timers | grep certbot
Vous devriez voir quelque chose comme ceci:
NEXT LEFT LAST PASSED UNIT ACTIVATES
2025-06-19 04:00:00 UTC 12h 2025-06-18 04:00:00 UTC 11h ago certbot.timer certbot.service
Pour tester le processus de renouvellement manuellement (sans apporter de modifications), exécutez:
sudo certbot renew --dry-run
Cela simule le processus de renouvellement complet et confirme que votre système est prêt à le gérer automatiquement.
S'il n'y a pas d'erreurs, vos certificats se renouvelleront tranquillement en arrière-plan à l'avenir.
Maintenant que votre proxy inversé est configuré et sécurisé avec SSL, c'est une bonne idée de conclure avec quelques contrôles pratiques et meilleures pratiques.
Ces habitudes simples peuvent aider à prévenir les problèmes en baisse, faciliter votre configuration à maintenir et à vous assurer que tout continue de fonctionner comme vous vous y attendez.
Même si tout semble fonctionner, passer quelques minutes supplémentaires ici peut vous faire gagner du temps et des problèmes plus tard.
Redémarrez votre application si elle ne détecte pas automatiquement les modifications
Certaines applications doivent être redémarrées pour fonctionner correctement derrière un proxy.
Vérifier les journaux
Vous pouvez surveiller les journaux Nginx pour les erreurs ou le trafic inhabituel:
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
Conservez Nginx et CERTBOT à jour
Utilisez régulièrement la mise à jour de Sudo Apt && sudo apt.Les packages mis à jour corrigent les bogues, améliorent la compatibilité et les problèmes de sécurité des correctifs.
Une fois que vous avez maîtrisé les bases de la mise en place d'un proxy inversé sécurisé, vous pouvez étendre votre configuration pour répondre aux besoins plus complexes.Voici quelques scénarios courants qui peuvent vous aider à tirer le meilleur parti de votre serveur.
Si vous exécutez plusieurs applications Web sur différents ports, Nginx peut acheminer les demandes vers chaque application en fonction du domaine ou du chemin d'url.
Exemple: différents domaines
server {
listen 80;
server_name app1.example.com;
location / {
proxy_pass http://localhost:3001;
# proxy headers here
}
}
server {
listen 80;
server_name app2.example.com;
location / {
proxy_pass http://localhost:3002;
# proxy headers here
}
}
Cette configuration vous permet de servir plusieurs applications à l'aide de sous-domaines séparés, le tout via Nginx sur des ports standard.
Utiliser Docker?Apprendre comment proxy proxy plusieurs applications docker avec nginx.
Alternativement, vous pouvez proxy basé sur des chemins d'urgence, ce qui est utile si vous voulez toutes les applications dans un seul domaine:
server {
listen 80;
server_name example.com;
location /app1/ {
proxy_pass http://localhost:3001/;
# proxy headers here
}
location /app2/ {
proxy_pass http://localhost:3002/;
# proxy headers here
}
}
Remarque: Lorsque vous utilisez la proxyation basée sur le chemin, les barres obliques et la réécriture d'URL peuvent devenir difficiles - assurez-vous que votre application backend peut gérer le service sous un sous-chemin.
Vous pouvez limiter le nombre de demandes qu'un client peut faire dans un délai donné pour protéger votre backend contre les abus ou la surcharge accidentelle.
Ajoutez ceci dans le bloc HTTP dans /etc/nginx/nginx.conf:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
Ensuite, dans votre serveur ou votre bloc d'emplacement:
limit_req zone=mylimit burst=20 nodelay;
Cette configuration permet 10 demandes par seconde avec des éclats allant jusqu'à 20 demandes, supprimant les demandes excédentaires pour éviter écraser votre application.
Si vous avez plusieurs instances de votre application en cours d'exécution (par exemple, plusieurs conteneurs ou VPSS), Nginx peut distribuer le trafic entre eux:
upstream backend {
server 192.168.1.10:3000;
server 192.168.1.11:3000;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
# proxy headers here
}
}
Nginx équilibre les rabats à la ronde par défaut, mais vous pouvez le configurer pour d'autres méthodes comme les moindres connexions ou le hachage IP.
Pour en savoir plus, consultez notre guide sur Équilibrage de chargement DNS.
Vous pouvez personnaliser la journalisation pour inclure des informations sur proxy importantes pour le dépannage ou l'analyse:
log_format proxy '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'upstream_response_time $upstream_response_time '
'request_time $request_time';
access_log /var/log/nginx/proxy_access.log proxy;
Cela enregistre les temps de réponse en amont et les temps de demande totaux, aidant à identifier les réponses backend lents.
Vous voudrez peut-être ajouter ou modifier les en-têtes HTTP pour la sécurité ou les fonctionnalités:
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy no-referrer-when-downgrade;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Ces en-têtes protègent contre le jacking, le reniflement de mime et applique l'utilisation des HTTPS.
Écrit par Hostwinds Team / juin 14, 2019