Comment configurer le Reverse Proxy de Nginx pour Apache ⋆ ALexHost SRL

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!.

Utilisez le code à la caisse :

Skills
10.12.2024

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 :
sudo apt update
sudo apt install nginx apache2
Pour CentOS/RHEL :
sudo yum install epel-release
sudo yum install nginx httpd

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 :

sudo systemctl start nginx
sudo systemctl start apache2 # Pour CentOS, utilisez 'httpd' au lieu de 'apache2'

sudo systemctl enable nginx
sudo systemctl enable apache2

É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
(au lieu du port
80
par défaut), afin que Nginx puisse écouter sur le port
80
.

Configurer Apache pour écouter sur le port 8080 :
  1. Ouvrez le fichier de configuration d’Apache :
    sudo nano /etc/apache2/ports.conf # Pour Debian/Ubuntu
    sudo nano /etc/httpd/conf/httpd.conf # Pour CentOS/RHEL
  2. Trouvez la ligne qui spécifie le port sur lequel Apache écoute (habituellement
    Listen 80
    ) et changez-la en :
    Listen 8080
  3. Enregistrez les modifications et quittez l’éditeur.
  4. Redémarrez Apache pour appliquer les modifications :
    sudo systemctl restart apache2 # Pour Debian/Ubuntu
    sudo systemctl restart httpd # Pour CentOS/RHEL

Apache est maintenant configuré pour écouter sur le port

8080
, ce qui permettra à Nginx d’écouter sur le port
80
(le port HTTP par défaut) et de transmettre les requêtes à Apache.

É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
et transmet les requêtes à Apache sur le port
8080
.

Créer la configuration de l’hôte virtuel Nginx :
  1. Ouvrez ou créez un nouveau fichier de configuration de l’hôte virtuel dans Nginx :
    sudo nano /etc/nginx/sites-available/example.com # Pour Debian/Ubuntu
    sudo nano /etc/nginx/conf.d/example.com.conf # Pour CentOS/RHEL
  2. Ajoutez la configuration suivante au fichier :
    server {
    listen 80 ;
    server_name example.com www.example.com ; # Remplacez par votre domaine ou serveur IPlocation
    / {
    proxy_pass http://127.0.0.1:8080 ; # Transférer les requêtes à 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 ;
    }# Servez le contenu statique directement via Nginx pour de meilleures performances
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d ;
    root /var/www/html ; # Chemin d’accès à vos fichiers statiques
    }
    }

Dans cette configuration :

  • listen 80
    : Nginx écoute les requêtes entrantes sur le port
    80
    .
  • server_name
    : Le domaine ou l’adresse IP que Nginx servira.
  • proxy_pass
    : Transmet les requêtes à Apache, qui écoute sur le port
    8080
    .
  • proxy_set_header
    : Transmet divers en-têtes à Apache, notamment l’adresse IP et le protocole d’origine du client.
  • Le bloc d’
    emplacement
    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.
  1. Enregistrez et fermez le fichier de configuration.
  2. Si vous utilisez Debian/Ubuntu, activez le site en créant un lien symbolique vers
    sites-enabled
    :
    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  3. Testez la configuration de Nginx pour vérifier qu’il n’y a pas d’erreurs de syntaxe :
    sudo nginx -t
  4. Redémarrez Nginx pour appliquer la nouvelle configuration :
    sudo systemctl restart nginx

É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.

  1. Visitez votre domaine ou votre adresse IP: Ouvrez votre navigateur et rendez-vous à l’adresse
    http://example.com
    (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.
  2. 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 :
      /var/log/nginx/access.log
      et
      /var/log/nginx/error.log
    • Journaux d’Apache :
      /var/log/apache2/access.
      log
      et
      /var/log/apache2/error.log
      (ou
      /var/log/httpd/
      pour CentOS/RHEL)

É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 :
  1. Obtenir un certificat SSL: Vous pouvez utiliser Let’s Encrypt pour obtenir un certificat SSL gratuit pour votre domaine :
    sudo apt install certbot python3-certbot-nginx # Pour Debian/Ubuntu
    sudo yum install certbot python3-certbot-nginx # Pour CentOS/RHELsudo
    certbot –nginx -d example.com -d www.example.com
  2. Modifier la configuration de Nginx: Mettez à jour votre fichier de configuration Nginx pour écouter le port
    443
    pour HTTPS :
    nginx
    serveur {
    listen 443 ssl ;
    server_name example.com www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem ;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem ;location / {
    proxy_pass http://127.0.0.1:8080;
    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 ;
    }location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expire 365 jours ;
    root /var/www/html ;
    }
    }
  3. 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 :
    server {
    listen 80 ;
    nom_du_serveur exemple.com www.example.com ;
    return 301 https://$server_name$request_uri ;
    }
  4. Redémarrez Nginx: Redémarrez Nginx pour appliquer les modifications :
    sudo systemctl restart nginx

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.

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!.

Utilisez le code à la caisse :

Skills