La configuration de Nginx en tant que serveur web et proxy inverse pour Apache sur un serveur Ubuntu 18.04 peut être réalisée en suivant un ensemble d’étapes méthodiques. Cette approche est souvent utilisée pour bénéficier des avantages de performance de Nginx tout en utilisant Apache pour servir des applications spécifiques qui nécessitent ses fonctionnalités. Voici un guide détaillé pour accomplir cette tâche complexe.
Installation de Nginx :

Avant toute chose, assurez-vous d’avoir les droits d’administrateur (sudo) pour effectuer ces opérations. Pour installer Nginx, utilisez la commande suivante dans votre terminal :
bashsudo apt update sudo apt install nginx
Après l’installation, démarrez le service Nginx et activez-le pour qu’il démarre automatiquement au démarrage du système :
bashsudo systemctl start nginx
sudo systemctl enable nginx
Installation d’Apache :
Si Apache n’est pas déjà installé, vous pouvez le faire avec les commandes suivantes :
bashsudo apt install apache2
Démarrez Apache et activez-le pour qu’il démarre automatiquement :
bashsudo systemctl start apache2
sudo systemctl enable apache2
Configuration de Nginx en tant que proxy inverse pour Apache :
- Création d’un bloc server dans la configuration Nginx :
Ouvrez le fichier de configuration Nginx dans un éditeur de texte (comme nano ou vim) :
bashsudo nano /etc/nginx/sites-available/default
Trouvez la section « server » et modifiez-la comme suit :
nginxserver { listen 80 default_server; listen [::]:80 default_server; server_name VOTRE_DOMAINE_OU_IP; location / { proxy_pass http://localhost:8080; # Le port d'écoute d'Apache 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; } # Autres configurations Nginx... }
- Redémarrage de Nginx :
Après avoir modifié la configuration, enregistrez et fermez le fichier. Puis, redémarrez le service Nginx pour appliquer les changements :
bashsudo systemctl restart nginx
Configuration d’Apache pour écouter sur un port spécifique :
Par défaut, Apache écoute sur le port 80. Pour éviter tout conflit avec Nginx, modifiez le fichier de configuration Apache pour qu’il écoute sur un autre port, par exemple le port 8080. Ouvrez le fichier de configuration :
bashsudo nano /etc/apache2/ports.conf
Ajoutez la ligne suivante ou modifiez celle existante :
apacheListen 8080
Enregistrez les modifications et fermez le fichier. Ensuite, modifiez le fichier de configuration du site par défaut pour spécifier le nouveau port :
bashsudo nano /etc/apache2/sites-available/000-default.conf
Modifiez la ligne « VirtualHost » pour qu’elle ressemble à ceci :
apache
# Autres configurations Apache...
Enregistrez et fermez le fichier. Redémarrez ensuite Apache pour appliquer les changements :
bashsudo systemctl restart apache2
À ce stade, Nginx est configuré en tant que proxy inverse pour Apache, et ils écoutent respectivement sur les ports 80 et 8080. Les requêtes HTTP sont dirigées vers Nginx, qui transmet ensuite le trafic à Apache. Ceci permet de profiter des performances élevées de Nginx tout en conservant la flexibilité d’Apache pour des applications spécifiques.
Plus de connaissances
Dans cette configuration complexe où Nginx agit en tant que serveur web principal et proxy inverse pour Apache, il est essentiel de comprendre plus en détail certaines des directives de configuration utilisées dans les fichiers de configuration. Explorons ces éléments pour approfondir vos connaissances.
1. Bloc server Nginx :
Le bloc server dans la configuration Nginx définit les paramètres pour un site particulier. Voici une explication détaillée des directives utilisées :
-
listen 80 default_server;
: Cette directive indique à Nginx d’écouter les connexions sur le port 80, qui est le port par défaut pour les requêtes HTTP. L’optiondefault_server
spécifie que ce bloc server sera utilisé par défaut si aucune correspondance de nom d’hôte n’est trouvée. -
server_name VOTRE_DOMAINE_OU_IP;
: Remplacez « VOTRE_DOMAINE_OU_IP » par votre nom de domaine ou adresse IP. Cette directive spécifie le nom du serveur virtuel et peut être utilisée pour déterminer quel bloc server doit être utilisé pour une requête donnée. -
location / { ... }
: Cette section définit les paramètres spécifiques à la localisation, indiquant comment Nginx doit traiter les requêtes. Dans notre cas, toutes les requêtes sont dirigées vers le backend Apache. Les directivesproxy_pass
et les headersproxy_set_header
sont essentielles pour assurer une communication correcte entre Nginx et Apache.
2. Configuration Apache :
Dans la configuration d’Apache, le changement du port d’écoute est crucial pour éviter les conflits avec Nginx. Voici quelques détails supplémentaires :
-
Listen 8080
: Cette directive indique à Apache d’écouter les connexions sur le port 8080. Le changement de ce port est essentiel pour éviter un conflit avec Nginx qui écoute sur le port 80. -
: Cette section définit la configuration spécifique du serveur virtuel pour Apache. En spécifiant le port 8080, vous évitez tout chevauchement avec le port 80 utilisé par Nginx. Vous pouvez définir d’autres paramètres spécifiques à Apache ici....
3. Proxy_pass et headers Nginx :
-
proxy_pass http://localhost:8080;
: Cette directive indique à Nginx de transmettre toutes les requêtes au backend Apache, qui écoute sur le port 8080. Cela permet à Nginx d’agir en tant que proxy inverse, dirigeant le trafic vers Apache pour le traitement. -
Les directives
proxy_set_header
sont utilisées pour transmettre certains en-têtes HTTP de la requête initiale à Apache. Par exemple,proxy_set_header Host $host;
transmet le champ « Host » de la requête originale à Apache. Cela assure que les informations d’en-tête nécessaires sont correctement traitées par le backend.
En adoptant cette architecture, vous combinez la rapidité et l’efficacité de Nginx en tant que serveur web avec la polyvalence d’Apache pour gérer des applications spécifiques. Cela offre une solution équilibrée qui répond aux besoins variés des sites web modernes. Il est important de noter que la configuration peut varier en fonction des besoins spécifiques de votre application et de votre infrastructure, et des ajustements supplémentaires peuvent être nécessaires en fonction des cas d’utilisation particuliers.