Nginx est un serveur web puissant qui peut également fonctionner efficacement comme proxy inverse. En le configurant comme proxy inverse, il peut être placé en amont de vos serveurs d'applications, afin de traiter les requêtes entrantes des clients et de les transférer vers les serveurs backend appropriés. Cette configuration permet d'améliorer les performances, la sécurité et l'évolutivité.
Avantages de l'utilisation de Nginx en tant que proxy inverse
- Équilibrage de charge : répartit le trafic entrant entre plusieurs serveurs backend.
- Sécurité renforcée : masquez la structure du réseau interne et les serveurs backend à l'accès direct des clients.
- Termination SSL/TLS : gère le chiffrement et le déchiffrement HTTPS, déchargeant ainsi les applications backend de cette tâche.
- Mise en cache : mettez en cache le contenu statique et dynamique pour réduire la charge du serveur et améliorer les temps de réponse.
- Compression : compresse les réponses pour accélérer leur transmission.
- Service de contenu statique : Servir efficacement les fichiers statiques directement, sans surcharger les serveurs d'applications.
1. Installez Nginx
Si Nginx n'est pas déjà installé sur votre serveur, vous pouvez l'installer à l'aide du gestionnaire de paquets de votre distribution.
- Pour Ubuntu/Debian :
bash sudo apt update sudo apt install nginx - Pour CentOS/RHEL/Fedora :
bash sudo dnf install nginx # or yum for older versions
Après l'installation, démarrez le service Nginx et activez-le pour qu'il se lance au démarrage :
sudo systemctl start nginx
sudo systemctl enable nginx
Vous pouvez vérifier que Nginx est en cours d'exécution en vous rendant à l'adresse http://localhost dans votre navigateur web.
2. Localiser les fichiers de configuration Nginx
Les fichiers de configuration Nginx se trouvent généralement dans /etc/nginx/. Le fichier de configuration principal est généralement nginx.conf. Vous trouverez souvent un sites-available répertoire contenant les configurations individuelles des sites, qui sont ensuite liées par des liens symboliques vers sites-enabled pour les activer.
3. Configurer le bloc serveur
Vous devrez créer ou modifier un bloc serveur dans votre configuration Nginx. Ce bloc définit la manière dont Nginx traite les requêtes pour un domaine ou une adresse IP spécifique.
Un bloc serveur de base pour un proxy inverse se présente comme suit :
server {
listen 80; # Nginx listens on port 80 for incoming HTTP requests
server_name your_domain.com www.your_domain.com; # Replace with your domain name
location / {
proxy_pass http://backend_server_ip:port; # Forward requests to your backend server
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;
}
}
Explication des directives :
listen 80;: Nginx écoutera les requêtes HTTP entrantes sur le port 80.server_name: Spécifie les noms de domaine auxquels ce bloc serveur doit répondre.location /: Ce bloc définit la manière dont les requêtes correspondant au chemin racine (/) sont traitées. Vous pouvez créer deslocationpour différents chemins (par exemple,location /api/).proxy_pass: Il s'agit de la directive principale pour le proxy inverse. Elle indique à Nginx de transférer les requêtes vers l'adresse IP et le port du serveur backend spécifié.proxy_set_header: Ces directives sont essentielles pour transmettre les informations d'origine du client (telles que l'adresse IP et l'hôte) au serveur backend, ce qui peut être utile pour la journalisation et la logique d'application.
4. Activer la configuration
Si vous avez créé un nouveau fichier de configuration dans sites-available/, vous devez l'activer en créant un lien symbolique vers sites-enabled/:
sudo ln -s /etc/nginx/sites-available/my_reverse_proxy /etc/nginx/sites-enabled/
5. Tester la configuration Nginx
Avant de redémarrer Nginx, vérifiez toujours que votre configuration ne contient pas d'erreurs de syntaxe :
sudo nginx -t
Si le test est réussi, un message s'affiche pour indiquer que la syntaxe est correcte et que le test s'est déroulé avec succès.
6. Recharger Nginx
Pour appliquer la nouvelle configuration, rechargez Nginx :
sudo systemctl reload nginx
7. Testez votre proxy inverse
Ouvrez un navigateur Web et accédez à http://your_domain.com (ou l'adresse IP de votre serveur si vous n'avez pas configuré de domaine). Nginx devrait désormais transférer votre requête vers le serveur backend, et vous devriez voir le contenu fourni par votre application backend.
Cette configuration de base constitue le fondement de l'utilisation de Nginx en tant que proxy inverse. Vous pouvez la personnaliser davantage avec des fonctionnalités telles que la terminaison SSL/TLS, l'équilibrage de charge, la mise en cache et des règles de routage plus avancées.