---
title: Proxy cache Squid
source: https://synapx.fr/blog/proxy-cache-squid/
date: 2026-06-26
category: Serveur Web
site: SynapxLab
---

# Proxy cache Squid

Deux architectures permettent d'intégrer Squid dans la chaîne.

## Squid en frontal

Dans cette configuration, Squid écoute sur le port 80 et transmet les requêtes à Nginx. Nginx gère ensuite SSL et joue le rôle de proxy inverse pour Apache.

Squid apporte des fonctions de cache HTTP, ce qui peut réduire la charge sur les serveurs en aval. Il peut également contribuer au filtrage du trafic et ajouter une couche de sécurité complémentaire.

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

## Nginx > Squid > Apache

Cette architecture simplifie la configuration SSL, car Nginx est directement exposé en frontal.

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

## Mise en place

Notre site `nomdedomaine.fr` fonctionne avec Nginx en proxy inverse. Nous y ajoutons le proxy Squid, puis remplaçons la cible du `proxy_pass` du port 8080 par le port 3128 de Squid :

```
proxy_pass http://127.0.0.1:8080  ==>>  proxy_pass http://127.0.0.1:3128;
```

```bash
sudo nano /etc/nginx/sites-available/nomdedomaine.fr
```

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

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

server {
    listen 443 ssl;
    server_name nomdedomaine;

    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:3128;
        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;
    }
}
```

## Configuration de Squid

```bash
sudo apt update
sudo apt install squid -y

cd /etc/squid/
sudo cp squid.conf squid.bak
sudo nano /etc/squid/squid.conf
```

```squidconf
# Configure Squid to listen on port 3128
http_port 3128 accel vhost allow-direct

# Configure Squid to forward requests to Apache
cache_peer 127.0.0.1 parent 8080 0 no-query originserver name=apache

# Autoriser uniquement les requêtes locales venant de Nginx
acl localhost src 127.0.0.1/32
http_access allow localhost
http_access deny all
```

```bash
sudo systemctl restart squid
```
