Comment configurer le Reverse Proxy de Nginx pour Apache
Nginx et Apache sont deux des serveurs web les plus populaires au monde, chacun avec ses points forts. Apache est connu pour sa flexibilité et son système de modules robuste, tandis que Nginx est apprécié pour ses performances élevées et sa faible consommation de ressources, en particulier pour servir du contenu statique. Dans de nombreux scénarios, il est avantageux de combiner les deux en utilisant Nginx comme proxy inverse devant Apache. Cette configuration permet à Nginx de gérer les requêtes entrantes et de servir les fichiers statiques, tandis qu’Apache s’occupe du contenu dynamique, comme les scripts PHP ou les applications basées sur des bases de données.
Dans cet article, nous vous expliquons comment configurer Nginx en tant que proxy inverse d’Apache, afin de garantir une configuration de serveur web transparente et efficace.
Qu’est-ce qu’un proxy inverse ?
Un proxy inverse est un serveur qui se trouve devant un ou plusieurs serveurs dorsaux et qui transmet les requêtes des clients au serveur approprié. Dans ce cas, Nginx agira en tant que proxy inverse, transmettant les requêtes à Apache, qui servira le contenu dynamique.
L’utilisation de Nginx en tant que proxy inverse présente plusieurs avantages :
- Amélioration des performances: Nginx excelle à servir rapidement les fichiers statiques (par exemple, les images, CSS, JavaScript), réduisant ainsi la charge sur Apache.
- Équilibrage de la charge: Nginx peut répartir le trafic entre plusieurs serveurs dorsaux, ce qui améliore la disponibilité et la fiabilité.
- Terminaison SSL: Nginx peut gérer le cryptage SSL, en déchargeant Apache de la charge de calcul.
- Sécurité: Nginx peut fournir des fonctions de sécurité supplémentaires, telles que le filtrage des requêtes et la limitation du débit.
Étape 1 : Installer Nginx et Apache
Avant de configurer Nginx en tant que proxy inverse, assurez-vous que Nginx et Apache sont installés sur votre serveur. Vous pouvez les installer à l’aide de votre gestionnaire de paquets, en fonction de votre distribution Linux.
Pour Debian/Ubuntu :
Pour CentOS/RHEL :
Une fois que Nginx et Apache sont installés, démarrez et activez les deux services pour vous assurer qu’ils fonctionnent au démarrage :
Étape 2 : Configurer Apache
Apache agira en tant que serveur dorsal, traitant les requêtes dynamiques telles que les scripts PHP. Assurez-vous qu’Apache est configuré pour écouter sur un port spécifique, généralement le port
8080
80
80
Configurer Apache pour écouter sur le port 8080 :
- Ouvrez le fichier de configuration d’Apache :
- Trouvez la ligne qui spécifie le port sur lequel Apache écoute (habituellement) et changez-la en :
Listen 80
- Enregistrez les modifications et quittez l’éditeur.
- Redémarrez Apache pour appliquer les modifications :
Apache est maintenant configuré pour écouter sur le port
8080
80
Étape 3 : Configurer Nginx en tant que proxy inverse
Ensuite, nous devons configurer Nginx pour qu’il agisse en tant que proxy inverse, en transmettant les requêtes à Apache. Nous allons créer un hôte virtuel dans Nginx qui écoute sur le port
80
8080
Créer la configuration de l’hôte virtuel Nginx :
- Ouvrez ou créez un nouveau fichier de configuration de l’hôte virtuel dans Nginx :
- Ajoutez la configuration suivante au fichier :
Dans cette configuration :
- : Nginx écoute les requêtes entrantes sur le port
listen 80
.80
- : Le domaine ou l’adresse IP que Nginx servira.
server_name
- : Transmet les requêtes à Apache, qui écoute sur le port
proxy_pass
.8080
- : Transmet divers en-têtes à Apache, notamment l’adresse IP et le protocole d’origine du client.
proxy_set_header
- Le bloc d’pour le contenu statique permet à Nginx de servir directement les fichiers tels que les images, les feuilles de style CSS et le JavaScript, ce qui réduit la charge sur Apache.
emplacement
- Enregistrez et fermez le fichier de configuration.
- Si vous utilisez Debian/Ubuntu, activez le site en créant un lien symbolique vers:
sites-enabled
- Testez la configuration de Nginx pour vérifier qu’il n’y a pas d’erreurs de syntaxe :
- Redémarrez Nginx pour appliquer la nouvelle configuration :
Étape 4 : Test de la configuration du proxy inverse
Maintenant que Nginx et Apache sont configurés, il est temps de tester la configuration du proxy inverse pour s’assurer que tout fonctionne correctement.
- Visitez votre domaine ou votre adresse IP: Ouvrez votre navigateur et rendez-vous à l’adresse(remplacez-la par votre domaine ou l’adresse IP de votre serveur). Si tout est configuré correctement, vous devriez voir le contenu servi par Apache, mais acheminé par Nginx.
http://example.com
- Vérifiez les journaux de Nginx et d’Apache: En cas de problème, vérifiez les journaux de Nginx et d’Apache :
- Journaux de Nginx : journaux de Nginx :et
/var/log/nginx/access.log
/var/log/nginx/error.log
- Journaux d’Apache :
/var/log/apache2/access.
etlog
(ou/var/log/apache2/error.log
pour CentOS/RHEL)/var/log/httpd/
- Journaux de Nginx : journaux de Nginx :
Étape 5 : (Facultatif) Configurer SSL pour HTTPS
Si vous souhaitez sécuriser votre site web avec HTTPS, Nginx peut gérer la terminaison SSL. Cela signifie que Nginx gérera les certificats SSL et le cryptage, tandis qu’Apache ne s’occupera que du trafic HTTP décrypté.
Étapes pour activer SSL :
- Obtenir un certificat SSL: Vous pouvez utiliser Let’s Encrypt pour obtenir un certificat SSL gratuit pour votre domaine :
- Modifier la configuration de Nginx: Mettez à jour votre fichier de configuration Nginx pour écouter le portpour HTTPS :
443
- Redirection HTTP vers HTTPS: ajoutez un bloc de redirection dans votre configuration pour vous assurer que toutes les requêtes HTTP sont redirigées vers HTTPS :
- Redémarrez Nginx: Redémarrez Nginx pour appliquer les modifications :
Conclusion
L’utilisation de Nginx comme proxy inverse pour Apache est une configuration puissante qui combine les forces des deux serveurs web. Nginx gère efficacement le contenu statique et les requêtes entrantes, tandis qu’Apache gère le contenu dynamique et le traitement en arrière-plan. Cette approche hybride peut considérablement améliorer les performances, la sécurité et l’évolutivité de votre infrastructure de serveur web.
En suivant les étapes décrites dans ce guide, vous pouvez configurer Nginx en tant que proxy inverse devant Apache et bénéficier du meilleur des deux mondes. En outre, l’implémentation de SSL avec Nginx garantit la sécurité de votre site web, ce qui vous assure, ainsi qu’à vos utilisateurs, une tranquillité d’esprit.