DevOps

Configuration Nginx avec Apache

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 :

bash
sudo 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 :

bash
sudo 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 :

bash
sudo apt install apache2

Démarrez Apache et activez-le pour qu’il démarre automatiquement :

bash
sudo systemctl start apache2 sudo systemctl enable apache2

Configuration de Nginx en tant que proxy inverse pour Apache :

  1. 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) :

bash
sudo nano /etc/nginx/sites-available/default

Trouvez la section « server » et modifiez-la comme suit :

nginx
server { 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... }
  1. 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 :

bash
sudo 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 :

bash
sudo nano /etc/apache2/ports.conf

Ajoutez la ligne suivante ou modifiez celle existante :

apache
Listen 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 :

bash
sudo 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 :

bash
sudo 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’option default_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 directives proxy_pass et les headers proxy_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.

Bouton retour en haut de la page