**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
# Howto Reverse Proxy avec Squid
[wiki:HowtoSquid Squid] peut être utilisé comme un puissant _reverse proxy_ permettant une mise en cache de contenu avec de grandes performances.[[BR]]
Son utilisation en amont d'un load-balancer comme [wiki:HowtoHaproxy HAProxy] s'utilise dans les infrastructures haute-disponibilité.
~~~
_________port 80: Frontal 1
/
Clients ---> port 80: Squid ---> port 8080: HAProxy /__________port 80: Frontal 2
\
\_________port 80: Frontal 3
~~~
Pour la mise en cache du contenu, Squid se comporte un peu comme un navigateur : il met en cache (ou pas !) selon les entêtes HTTP
envoyés par les différents contenus. Il permet également la gestion des réponses "304 - Not modified" qui évitent aux navigateurs
de télécharger plusieurs fois le même contenu si il n'a pas changé.
Il semble évident que les pages d'erreur applicatives doivent s'assurer de ne pas être mises en cache (ça c'est le boulot des développeurs). Pour certains types d'erreur (connexions refusées, 404, etc.), elles sont suceptibles d'être mises en "cache négatif" (TCP_NEGATIVE_HIT). Pour éviter cela, on ajoutera l'option :
~~~
negative_ttl 0
~~~
Pour ne pas cacher certains codes d'erreur spécifiques, on fera par exemple :
Pour purger tout le cache, une méthode douce (les connexions en cours ne sont pas coupées) mais lente (les nouvelles connexions vont échouer pendant ce temps) :
~~~
/etc/init.d/squid3 stop
echo "" > /var/spool/squid3/swap.state
rm -rf /var/spool/squid3/0*
/usr/sbin/squid3 -z
/etc/init.d/squid3 start
~~~
Une méthode quasi-instantanée et violente (coupure des connexions en cours) :
~~~
kill -9 `cat /var/run/squid3.pid`
echo "Deleting data file..."
# rm -f /var/spool/squid3/swap.state
rm -rf /var/spool/squid3/*
/etc/init.d/squid3 start
~~~
## Divers
### Authentification HTTP avec Squid
Si une authentification HTTP est présente sur les frontaux web, il est nécessaire d'ajouter l'option *login=PASS* à la directe _cache_peer_' :