---
title: Proxy inverse Nginx vers Apache
source: https://synapx.fr/blog/proxy-inverse-nginx-apache/
date: 2026-06-26
category: Serveur Web
site: SynapxLab
---

# Proxy inverse Nginx vers Apache

```
+------------------+
|  Utilisateurs    |
+---------+--------+
          |
          v                            
                   
+---------+-------------+
| Nginx (proxy inverse) |
+---------+-------------+
          |
          v                            
+---------------------------------+
|  Apache + (PHP / FastCGI)       |
+---------+-----------------------+
```

Notre site nomdedomaine.fr repose sur Apache ; nous allons y ajouter Nginx en tant que proxy inverse.

1. 1re étape : configurer Apache sur le port 8080
2. 2e étape : installer Nginx

## Configurer Apache sur le port 8080

```bash
sudo apt update
sudo systemctl stop apache2

sudo cp /etc/apache2/ports.conf /etc/apache2/ports.conf.bak
sudo nano /etc/apache2/ports.conf
Listen 127.0.0.1:8080

sudo a2dissite 000-default.conf
sudo a2dissite default-ssl.conf
sudo a2dissite nomdedomaine.conf
...

cd /etc/apache2/sites-available
sudo cp default-ssl.conf default-inverse.conf

sudo nano default-inverse.conf
```

```apache
<VirtualHost 127.0.0.1:8080>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    # Autres directives...
#   Commenter ou supprimer les lignes
#     SSLEngine on
#     SSLCertificateFile /etc/letsencrypt/live/nomdedomaine/fullchain.pem
#     SSLCertificateKeyFile /etc/letsencrypt/live/nomdedomaine/privkey.pem

SSLEngine off
</VirtualHost>
```

```bash
sudo apachectl configtest
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2

# Le cache de votre navigateur peut vous jouer des tours !!

curl -I http://nomdedomaine/index.nginx-debian.html
```

## Installer Nginx et configurer le proxy inverse

```bash
sudo apt install nginx -y

curl -I http://monserveur/index.html
curl -I http://monserveur/index.nginx-debian.html

# installer le proxy inverse, la redirection de port

cd /etc/nginx/sites-available/
sudo cp default default.bak
sudo nano default
```

```nginx
server {
        listen 80 default_server;
        listen [::]:80 default_server;

    location / {
        proxy_pass http://127.0.0.1:8080;  # Changez le port si nécessaire
        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;

        proxy_read_timeout 60s;
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
    }
}
```

Le certificat nomdedomaine existe déjà. Veillez à remplacer `default_server` par le nom de domaine ou l'adresse correspondante.

```bash
sudo nano /etc/nginx/sites-available/default
sudo nginx -t
sudo systemctl restart nginx
```

```nginx
server {
    listen 80;
    server_name nomdedomaine;

    server_tokens off;

    # Rediriger les requêtes HTTP vers HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl http2;
    server_name nomdedomaine;

    server_tokens off;

    ssl_certificate /etc/letsencrypt/live/nomdedomaine/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nomdedomaine/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    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;

        proxy_read_timeout 60s;
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;        
    }
}
```

```bash
sudo nginx -t
sudo systemctl restart nginx
```

## HTTP/2

L'activation de HTTP/2 sur Nginx peut améliorer les performances côté client, notamment lorsque le serveur doit gérer de nombreuses requêtes parallèles. Si Nginx termine déjà le HTTPS en frontal devant Apache, activer HTTP/2 sur Apache n'apporte pas de bénéfice aux visiteurs, car la liaison Nginx → Apache reste généralement en HTTP/1.1 en local.

Côté Nginx :

```nginx
    server {
    listen 443 ssl http2;
    server_name nomdedomaine;
    ......
```

```bash
sudo nginx -t
sudo systemctl restart nginx
```

Côté Apache :

```apache
<VirtualHost *:443>
    Protocols h2 http/1.1
    ServerName exemple.com

    SSLEngine on
     SSLCertificateFile /chemin/vers/vot........
```

```bash
sudo apachectl configtest
sudo systemctl restart apache2
```
