Un forward proxy (ou mandataire sortant) est un serveur intermédiaire placé devant les clients. Il intercepte les requêtes sortantes des clients et les transmet à Internet en leur nom. Du point de vue du serveur de destination, la requête provient du proxy, pas du client.

À ne pas confondre avec le Reverse Proxy qui se place devant les serveurs — le forward proxy se place devant les clients.


Fonctionnement

Réseau interne                        Internet
┌─────────────┐                    ┌─────────────────┐
│  Client A   │──┐                 │  google.com     │
├─────────────┤  │   ┌───────┐     ├─────────────────┤
│  Client B   │──┼──►│ Proxy │────►│  github.com     │
├─────────────┤  │   └───────┘     ├─────────────────┤
│  Client C   │──┘    masque       │  site-bloqué.io │
└─────────────┘      les IPs          (bloqué ❌)

Les serveurs distants voient uniquement l’IP du proxy, jamais celle des clients.


Fonctionnalités principales

FonctionnalitéDescription
AnonymisationMasque l’IP réelle des clients vis-à-vis des serveurs distants
Contrôle d’accèsBloque certains domaines ou catégories de sites (ex. réseaux d’entreprise)
CacheMet en cache les ressources fréquentes (images, pages) pour économiser la bande passante
JournalisationLogge tout le trafic sortant pour audit et conformité
Filtrage de contenuAnalyse et bloque les contenus malveillants (malware, phishing)
Inspection TLSDéchiffre et réchiffre le trafic HTTPS pour l’inspecter (SSL inspection)

Exemple : Configuration NGINX en forward proxy

NGINX n’est pas un forward proxy natif pour HTTPS — on utilise généralement Squid ou mitmproxy. Pour HTTP simple :

server {
    listen 8080;
 
    location / {
        resolver 8.8.8.8;                        # DNS pour résoudre les domaines cibles
        proxy_pass http://$host$request_uri;     # forward vers la destination originale
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Exemple : Squid (forward proxy standard)

Squid est la référence pour les forward proxies en entreprise.

/etc/squid/squid.conf — configuration de base :

# Port d'écoute
http_port 3128

# ACL : réseau interne autorisé
acl reseau_interne src 10.0.0.0/8
http_access allow reseau_interne

# Blocage de domaines
acl sites_bloques dstdomain .facebook.com .tiktok.com
http_access deny sites_bloques

# Tout autre trafic refusé
http_access deny all

# Cache disque : 10 Go
cache_dir ufs /var/spool/squid 10000 16 256

Configurer un client pour utiliser le proxy :

# Variables d'environnement (Linux)
export http_proxy=http://10.0.0.5:3128
export https_proxy=http://10.0.0.5:3128
 
# curl avec proxy
curl -x http://10.0.0.5:3128 https://github.com
 
# apt avec proxy
echo 'Acquire::http::Proxy "http://10.0.0.5:3128";' >> /etc/apt/apt.conf

Exemple : mitmproxy (inspection et debug)

mitmproxy permet d’intercepter et d’analyser le trafic HTTPS en clair (utile en développement) :

# Lancer mitmproxy en mode interactif
mitmproxy --listen-port 8080
 
# Mode console avec dump des requêtes
mitmproxy --mode regular --listen-port 8080
 
# Configurer le client
export https_proxy=http://localhost:8080
# Installer le certificat CA de mitmproxy pour éviter les erreurs TLS

Cas d’usage typiques

ContexteUtilisation du forward proxy
EntrepriseFiltrage des accès Internet des employés, journalisation, contrôle DLP
Réseau sécuriséLes serveurs sans accès Internet direct passent par le proxy pour les mises à jour
DéveloppementInspecter le trafic HTTPS d’une application (mitmproxy, Charles Proxy)
AnonymisationMasquer l’IP source pour des tests ou du web scraping
Cache réseauRéduire la bande passante en mettant en cache les ressources communes

Forward Proxy vs Reverse Proxy — récapitulatif

Forward ProxyReverse Proxy
Positionné devantLes clientsLes serveurs
Initié parLe client (configuré explicitement)Transparent pour le client
MasqueL’identité du clientL’identité du serveur
UsageContrôle sortant, anonymat, cacheExposition de services, TLS, routage
ExemplesSquid, mitmproxy, PrivoxyNGINX, HAProxy, Traefik, ALB

En relation avec

  • Proxy — Vue d’ensemble — hub : forward proxy, reverse proxy, outils, comparatif
  • Reverse Proxy — le pendant côté serveur
  • Forward Proxy vs NAT — comparaison détaillée couche par couche entre les deux mécanismes
  • DNS — le proxy résout les noms de domaine des destinations
  • NAT — la NAT masque aussi les IPs privées, mais au niveau réseau (L3) sans logique applicative
  • TLS et SSL — l’inspection TLS du forward proxy casse le mTLS end-to-end